我有一个表行列表,由于某种原因(leg-1,leg-2等),这些tr带有编号的类。在此上下文中已经可以删除单个tr。
删除tr后,我需要重命名其余的tr。
例:
我有
<tr class="leg-1"></tr>
<tr class="leg-2"></tr>
<tr class="leg-3"></tr>
现在我删除leg-2。剩余的是:
<tr class="leg-1"></tr>
<tr class="leg-3"></tr>
现在,我想重命名其余的tr,以使其回到leg-1和leg-2。
如何才能做到这一点??
感谢您的帮助!
编辑:
我忘了提一下,它在类“ leg-1”,“ leg-2”中可以有一个以上的tr。因此,正确的开始示例是
<tr class="leg-1"></tr>
<tr class="leg-1"></tr>
<tr class="leg-2"></tr>
<tr class="leg-3"></tr>
<tr class="leg-3"></tr>
现在,当我删除leg-2时,两个具有class =“ leg-3”的tr都必须重命名为class =“ leg-2”。 ..
抱歉,我之前没有提到!
实际行动
http://jsfiddle.net/Lynkb22n/2/
最佳答案
更新
根据您在下面的评论和更新的问题,这是更新的解决方案。
var removed = $(".leg-2"),
siblings = removed.nextAll(), // affect only next siblings to removed element
pos = ""; // store current number after "leg-"
removed.remove(); // remove element
siblings.each(function (k) {
$(this).removeClass(function (i, key) {
pos = key.split("-")[1]; // update number after "leg-"
return (key.match(/\bleg-\S+/g) || []).join(' ');
}).addClass("leg-" + (pos - 1)); // add "leg-" plus new position
});
看到它正常工作。
您可以将
.removeClass()
与.match()
一起使用,以删除以leg
开头的类,然后使用leg
添加类tr
加上.addClass()
的索引。看到它正常工作。
$("tr").each(function (k) {
k++;
$(this).removeClass(function (i, key) {
return (key.match(/\bleg-\S+/g) || []).join(' ');
}).addClass("leg-" + k);
});
关于javascript - jQuery:如何重新计数和重命名元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28176030/