以下代码为每个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-0
,edid-0-1
,edid-0-2
,依此类推。
但相反,所有内容都是edid-0-0
,edid-0-0
,did-0-0
...
或edid-0-3
,edid-0-3
,edid-0-3
...
取决于我放置变量的位置(在每个函数内部或外部)。
我尝试了各种变体,但它始终是相同的ID结尾,而且没有连续的数字。我有点理解为什么会这样,但我不知道如何解决这个问题。坐在这里几个小时。我的头 - &gt;爆炸。
答案 0 :(得分:2)
由于d始终为0,为什么不使用function()
此外,您在每次迭代期间都在执行$("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;
在你的每个
中