给出N行的ID顺序需要JQuery帮助

时间:2009-12-07 21:50:11

标签: jquery sorting

我正在尝试添加一个功能,当用户点击“删除”时,

  1. 更新最左列中的数字
  2. 更新ID顺序
  3. 更新交替配色方案
  4. 我需要帮助:

    1. 我可以更新数字行 但它目前所有行都会更新,即使没有任何内容。 有人可以告诉我如何只对填充的行进行此操作吗?例如, 当给定行没有数据时停止。

    2. 我更新给定行的所有ID的逻辑出了问题。 我想要做的是用相应的行号替换id名称末尾的数字(例如“numRow11”)。

              $('#files_list tr').each(function(index) {
      
                  // update number order
                  $(this).find("td:first").text(index+1);    
      
                 $(this).find("td").attr('id', $(this).attr('id').replace($(this).attr('id').match(/[\d\.]+/g), index));                          
      
                 if (index % 2 == 0)
                   $(this).removeClass().addClass('evenRow');
                 else
                  $(this).removeClass().addClass('oddRow');
      
      });
      

3 个答案:

答案 0 :(得分:0)

  

当一行没有数据时停止。

docs.jquery.com:

  

从每个函数中返回'false'会完全停止循环遍历所有元素(这就像使用带有正常循环的'break')。

答案 1 :(得分:0)

我不确定是否有查询表行的属性以查看它是否为空。但您可以向表行添加隐藏字段,并使用该字段确定该行是否为空。或者如果该行只有文本框来输入数据,您可以执行类似这样的操作

$('#files_list tr')。each(function(index){      var rowblank = true;

 $(this).find("td").filter("input[type=text]").each(function() {
        if ($(this).val().length > 0) {
            rowblank = false;
            return false;
        }
 });

  if (rowblank === false) {

            // update number order
            $(this).find("td:first").text(index+1);    

           $(this).find("td").attr('id', $(this).attr('id').replace($(this).attr('id').match(/[\d\.]+/g), index));                          

           if (index % 2 == 0)
             $(this).removeClass().addClass('evenRow');
           else
            $(this).removeClass().addClass('oddRow');
      }

});

答案 2 :(得分:0)

好的,感谢您的回复,但我最终想出了如何以另一种方式做到这一点。 对我来说,关键是能够根据数据确定有多少行有数据 我写的javascript库中的addRow click事件。一旦我有“hasdata”值 然后剩下的就是直截了当。我在下面发布它,以防将来对任何人都有帮助。

感谢您的帮助。

// current count of rows with data
                         var hasdata = element.multi_selector.count - 2;

                         $('#files_list tr').each(function(index) { 

                            // THIS REPLACES THE ROW NUMBER ORDER
                            if (index < hasdata)
                                $(this).find("td:first").text(index+1);
                            else
                                $(this).find("td:first").text("");  

                            // THIS RESETS THE ALTERNATING COLOR SCHEME
                            if (index % 2 == 0)
                                $(this).removeClass().addClass('evenRow');
                            else
                                $(this).removeClass().addClass('oddRow');          

                            // THIS UPDATES THE ID VALUES - "someid1, someid2, someid3, someid4, etc"
                            $(this).find("td").each(function(){

                               var id = $(this).attr('id');   
                               $(this).attr('id', id.replace(id.match(/[\d\.]+/g), index));

                            });