如何在不使用For循环的情况下在JQuery中生成动态ID?

时间:2015-05-11 06:48:31

标签: 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 0.2)。

如果在广播中选择“是”,则问题依赖于问题1.4答案,然后将禁用问题2.2的文本框。此外,还需要在点击和加载时实现此功能。

以下是我现在在JQuery / Javascript中生成问题ID的方式:

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
    }
}

在disableit中我们有以下功能:

$(".Class_"+number).addClass("yahooeffect");
$("#textarea_"+number).attr('disabled', true);

JQuery / Javascript中是否有任何替代方法可以帮助删除for循环并以另一种更简单的方式执行上述操作?任何正则表达式可以帮助我喜欢.Class_ [1.1-1.9]等,这样我就可以只用一两个语句来处理它?<​​/ p>

更新

每个问题都在一行中。喜欢(1.1 - 你想要鸟吗?是/否评论)(1.2 - 你想要Doggy吗?是/否评论)。这四个中的每一个都在单独的div中,如div为1.1,div为div和div为radio和div为评论。因此,如所解释的那样,ID是分开的。问题具有混合依赖性

2 个答案:

答案 0 :(得分:0)

尝试uniqueId

示例:

$(selector).uniqueId();

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>

JS:

$(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>

演示:http://jsfiddle.net/GCu2D/693/

  

许多小部件需要为元素生成唯一的ID。 .uniqueId()将检查元素是否具有id,如果没有,它将生成一个并在元素上设置它。在元素上调用.uniqueId()而不检查它是否已具有id是安全的。如果/当小部件需要在其自身之后进行清理时,.removeUniqueId()方法将从元素中移除id(如果它由.uniqueId()添加,并且如果不是则单独保留id。 .removeUniqueId()能够很聪明,因为生成的id具有前缀“ui-id - ”。

答案 1 :(得分:0)

元素有一个共同的类。例如,class="question"。然后,您可以使用$(".question")定位所有这些目标。如果他们拥有唯一ID,请使用ID逐个定位:id="question-1.1"$("#question-1.1")。如果您无法使用ID,请分配两个类:class="question question-1.1",然后您可以使用$(".question")表示所有ID,$(".question-1.1")表示一个。