jQuery - 为下一个兄弟添加不同的id

时间:2012-01-11 15:44:09

标签: jquery

以下代码为每个div兄弟添加相同的ID:

var d = 0;
var newid = currentId.substring(currentId.length-8, currentId.length-1)+d;

$.each(('table').next(), function() {
    $('table').find('div[id|="edid"]').attr("id", newid);   
    d++;
});

HTML结构如下所示:

<table><tr><td><div id="edid-0-">text</div></td></tr></table>
<br>
<table><tr><td><div id="edid-0-">text</div></td></tr></table>
<br>
<table><tr><td><div id="edid-0-">text</div></td></tr></table>

运行我的代码后,ID应如下所示:edid-0-0edid-0-1edid-0-2,依此类推。

但相反,所有内容都是edid-0-0edid-0-0did-0-0 ...                          或edid-0-3edid-0-3edid-0-3 ...

取决于我放置变量的位置(在每个函数内部或外部)。

我尝试了各种变体,但它始终是相同的ID结尾,而且没有连续的数字。我有点理解为什么会这样,但我不知道如何解决这个问题。坐在这里几个小时。我的头 - &gt;爆炸。

4 个答案:

答案 0 :(得分:2)

由于d始终为0,为什么不使用function()

中的index参数

此外,您在每次迭代期间都在执行$("table"),这将再次查询dom。我假设您确实希望$(this)在当前<div/>下找到<table/>

var newid = currentId.substring(currentId.length-8, currentId.length-1)+d;
$.each($('table').next(), function(index, elm) {
    $(this).find('div[id|="edid"]').attr("id", newid + index);   
});

答案 1 :(得分:0)

您正在设置值&#34; newid&#34; (这永远不会改变),但你正在增加&#34; d&#34;。

答案 2 :(得分:0)

简单:移动

var newid = currentId.substring(currentId.length-8, currentId.length-1)+d;

S.each内部回调函数,用于在每次迭代时重新定义ID字符串。此外,它是否真的将ID添加到下一个表?对我而言,似乎代码应该将ID添加到''s。

答案 3 :(得分:0)

你应该把这个:

var newid = currentId.substring(currentId.length-8, currentId.length-1)+d;

在你的每个