我有一个表行列表,由于某种原因(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/

10-12 06:35