jQuery - 重命名和重新编号(计数)元素

时间:2015-01-28 09:02:10

标签: javascript jquery html

我有一个表行列表,这些tr由于某种原因(例如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。剩下的就是:

<tr class="leg-1"></tr>
<tr class="leg-1"></tr>
<tr class="leg-3"></tr>
<tr class="leg-3"></tr>

因此,一旦我删除了leg-2,两个tr =#leg;&#34; leg-3&#34;必须重命名为class =&#34; leg-2&#34;,以便它再次出现:

<tr class="leg-1"></tr>
<tr class="leg-1"></tr>
<tr class="leg-2"></tr>
<tr class="leg-2"></tr>

怎么办呢?

感谢您的帮助!

FIDDLE

http://jsfiddle.net/Lynkb22n/2/

1 个答案:

答案 0 :(得分:1)

我扩展了现有的删除腿按钮处理程序代码,一旦删除了表的一部分,就为表行添加更新部分。我希望你能找到合适的代码。 Fiddle

是的,这是我第一次使用jQuery containing selector,所以我觉得这个问题很酷: - )

 $(document).on("click", "#segment-table .delete_this_leg", function () {
    var rows_to_delete = $(this).parent().parent().parent().attr('class').slice(-1);
    $("tr.leg-" + rows_to_delete).remove();
    var cntAbreiseSegments = $('.legX').length / 3;
    if (cntAbreiseSegments < "2") {
          $('#addSegment').show();
    }

    var  legNro = 0;

    //select all tr elements that which class attribute value
    //contains text: 'leg-'
    $('tr[class*="leg-"]').each(function () {

        $elem = $(this);        
        var elemClass = $elem.attr("class");

        //remove current classes
        $elem.removeClass();

         var legClasses = ""; 

        //element has class divider  
        if (elemClass.indexOf('divider') > -1 ) {
            legClasses = "divider ";
        } //element has class legX, and is not divider
        else if (elemClass.indexOf('legX') > -1 ) {

            legClasses = "legX ";

        } else {//the row with leg text visible

            var text = "leg-" + legNro;

            $elem.find("b").html(text);       
        }

        legClasses = legClasses + " leg-" + legNro; 

        //add updated classes
        $elem.addClass(legClasses);

        //add by one legNro if divider is found
        if (elemClass.indexOf('divider') > -1 ) {
             legNro += 1;
        }       

    });

});