jQuery每个循环重命名一个ID的每个实例

时间:2011-08-07 17:10:34

标签: jquery each

我有一个页面在表格中创建动态创建的行,其输入ID为“fixedRate”

我正在尝试重命名fixedRate id的每个实例。这仅适用于我当前代码的id的第一个实例。

以下是代码:

var amountRows = $("#billTasks > tr").size();
var i=1;


$("#fixedRate").each(function(){

if (i == amountRows) {
    return false; 
}
    this.id = this.id + i;
    i++;
});

我认为代码应该工作的方式是在fixedRate ID的每个实例的单词fixedRate的末尾添加1,2,3,.... (即fixedRate1,fixedRate2,......)

我是否需要使用while循环?我尝试了很多不同的东西,包括一个while循环,并设法让我的浏览器一遍又一遍地崩溃。所以现在我正在寻找你的帮助!

感谢!!!

5 个答案:

答案 0 :(得分:2)

使用id选择器时,jQuery只返回第一个实例。

Each id value must be used only once within a document. If more than one element has been assigned the same ID, queries that use that ID will only select the first matched element in the DOM.

http://api.jquery.com/id-selector/

由于只返回一个元素,因此每个循环只运行一次。

您有两种可能的解决方案。您可以更新脚本中自动生成fixedRate id的逻辑,以便生成唯一ID,或者您可以让该脚本设置一个fixedRate类而不是id。然后,您可以遍历每个类并为其分配唯一的ID。

$(".fixedRate").each(function(i) {
    var row = $(this)
    row.attr('id', 'fixedRate' + i);
});

答案 1 :(得分:0)

标识符主要用于挑选元素,如果你想要一个广泛的组。 我建议你将id转换成类,如

<a class="test"></a>

然后,您可以使用选择器

访问所有元素
$(".test") // gathers all elements that contain that class

如果你想枚举所有元素,你可以在回调中使用带有两个参数的每个函数

$.each($(".test"), function(a,b){
//a is the index
//b is the element
b.attr("id", a); // to set each element id to their index
});

答案 2 :(得分:0)

你也许可以尝试使用类似的东西:

$('tbody tr[id^="fixedRate"]').each(
    function(i){
        this.id = 'fixedRate' + i;
    });

JS Fiddle demo

答案 3 :(得分:0)

这不起作用,您必须首先拥有唯一的ID 或者不是id="fixedRate",而是将其class="fixedRate"改为使用$(".fixedRate")
发布了一个示例jsfiddle http://jsfiddle.net/playerace/L4szw/,并注意到警报只出现一次。

答案 4 :(得分:0)

试试这个:

$(".fixedRate").each(function(i){
    var $this = $(this)
    $this.attr('id','fixedRate' + i);
});

你不需要注意行数。

并使用课程调用所有费率,然后分配一个ID。