Javascript 如何在JQuery中生成动态ID而不使用For循环?
表格中有7个问题,编号为1.1至1.4和2.1至2.3,答案为Radio(ID:#Radio_1.1和#Radio_1.2)和textarea(ID:#textarea_1.1,#textarea_1.2) 问题相互依赖,如问题1.4回答如果在收音机中选择“是”,则将禁用问题2.2的文本框。此外,需要在单击和加载期间实现此功能 以下是我目前在JQuery/Javascript中生成问题id的方法:Javascript 如何在JQuery中生成动态ID而不使用For循环?,javascript,jquery,Javascript,Jquery,表格中有7个问题,编号为1.1至1.4和2.1至2.3,答案为Radio(ID:#Radio_1.1和#Radio_1.2)和textarea(ID:#textarea_1.1,#textarea_1.2) 问题相互依赖,如问题1.4回答如果在收音机中选择“是”,则将禁用问题2.2的文本框。此外,需要在单击和加载期间实现此功能 以下是我目前在JQuery/Javascript中生成问题id的方法: for(var tabNumber=1;tabNumber<=2;tabNumber++)
for(var tabNumber=1;tabNumber<=2;tabNumber++) {
var questions=0;
if(tabNumber==1) questions=4;
if(tabNumber==2) questions=3;
for(var decimalNumber=1;decimalNumber<=questions;decimalNumber++){
disableit(tabNumber+"\\."+decimalNumber,value); //This generate id of comment box like #textarea_1.1, #textarea_1.2 and radio also like #radio_1.1 and #radio_1.1 and even few classs like .Class_1.1 and .Class_1.2
}
}
JQuery/Javascript中是否有其他方法可以帮助删除for循环并以另一种更简单的方式执行上述操作?任何能帮助我的正则表达式,比如.Class_u[1.1-1.9]等等,这样我就可以在一个或两个语句中应用东西
更新
每个问题排在一行。比如(1.1-你想要小鸟吗?是/否评论)(1.2-你想要小狗吗?是/否评论)。这四个分区中的每一个都是单独的分区,如1.1分区、问题分区、广播分区和评论分区。所以ID是分开的,正如前面所解释的。问题有混合依赖关系试试看 示例:
$(selector).uniqueId();
HTML:
结果:
<div class="checked" id="ui-id-1">1</div>
<div class="checked" id="ui-id-2">2</div>
<div class="checked" id="ui-id-3">3</div>
<div class="checked" id="ui-id-4">4</div>
<div class="checked" id="ui-id-5">5</div>
<div class="checked" id="ui-id-6">6</div>
<div class="checked" id="ui-id-7">7</div>
<div class="checked" id="ui-id-8">8</div>
<div class="checked" id="ui-id-9">9</div>
<div class="checked" id="ui-id-10">10</div>
<div class="checked" id="ui-id-11">11</div>
<div class="checked" id="ui-id-12">12</div>
1
2.
3.
4.
5.
6.
7.
8.
9
10
11
12
演示:
许多小部件需要为元素生成唯一的ID.uniqueId()
将检查元素是否有id,如果没有,它将生成一个id并在元素上设置它。在一个元素上调用.uniqueId()
是安全的,无需检查它是否已经有id。如果/当小部件需要在其自身之后清理时,.removeUniqueId()
方法将从元素中删除id(如果它是由.uniqueId()
添加的),如果没有id,则不使用id.removeUniqueId()
能够巧妙地处理这一问题,因为生成的id的前缀为“ui id-”
Have元素有一个公共类。例如,
class=“question”
。然后,您可以使用$(“.question”)
将所有目标锁定。如果它们有唯一的ID,请使用ID分别针对它们:ID=“question-1.1”
和$(“#question-1.1”)
。如果您不能使用ID,请分配两个类:class=“question-question-1.1”
,然后您可以将$(“.question”)
用于所有类,或者将$(“.question-1.1”)
用于一个类。每个问题都在一行中。比如(1.1-你想要鸟吗?是/否评论)(1.2-你想要动物吗?是/否评论)。这四个分区中的每一个都是单独的分区,如1.1分区、问题分区、广播分区和评论分区。所以ID是分开的,正如前面所解释的。由于这个问题相互之间存在混合依赖关系,所以不能为所有类声明一个类。如果再增加30个问题,则个人ID目标将不必要地增加代码。您已经有个人类(Class_1.1
或类似类);ID匹配比类匹配快,所以如果class_1.1
在页面上是唯一的,则最好转换为ID。在Radio div中,无法使用类。和在收音机中一样,我需要验证是否选择了一个禁用另一个,所以我只需要在ID上播放。所以这对我不起作用。对不起,你的叙述令人困惑。请考虑制作一个jsFoDelp来演示HTML结构,并详细描述你希望发生的事情。
<div class="checked">1</div>
<div class="checked">2</div>
<div class="checked">3</div>
<div class="checked">4</div>
<div class="checked">5</div>
<div class="checked">6</div>
<div class="checked">7</div>
<div class="checked">8</div>
<div class="checked">9</div>
<div class="checked">10</div>
<div class="checked">11</div>
<div class="checked">12</div>
$(document).ready(function () {
$(".checked").uniqueId();
});
<div class="checked" id="ui-id-1">1</div>
<div class="checked" id="ui-id-2">2</div>
<div class="checked" id="ui-id-3">3</div>
<div class="checked" id="ui-id-4">4</div>
<div class="checked" id="ui-id-5">5</div>
<div class="checked" id="ui-id-6">6</div>
<div class="checked" id="ui-id-7">7</div>
<div class="checked" id="ui-id-8">8</div>
<div class="checked" id="ui-id-9">9</div>
<div class="checked" id="ui-id-10">10</div>
<div class="checked" id="ui-id-11">11</div>
<div class="checked" id="ui-id-12">12</div>