每次在jquery中获取最后一次迭代

时间:2012-01-28 00:30:57

标签: javascript jquery jquery-selectors

我有以下代码,我将通过表列,如果它是最后一列,我希望它做一些不同的事情。现在它的硬编码,但我怎么能改变,所以它自动知道它的最后一列

$(this).find('td').each(function (i) { 
    if(i > 0) //this one is fine..first column
    { 
        if(i < 4)  // hard coded..I want this to change 
        {
            storageVAR += $(this).find('.'+classTD).val()+',';
        }
        else
        {
            storageVAR += $(this).find('.'+classTD).val();
        }
    }
});

4 个答案:

答案 0 :(得分:13)

如果您想要访问.each()回调中的长度,那么您只需要预先获得长度,以便在您的范围内可用。

var cells = $(this).find('td');
var length = cells.length;
cells.each(function(i) {
    // you can refer to length now
});

答案 1 :(得分:6)

看起来您的目标是以逗号分隔的值列表,为什么不收集值并使用数组方法“join”?

var values = []
$(this).find('td .' + classTD).each(function(i) {
  if (i > 0) values.push($(this).val());
});
storageVAR = values.join(',');

答案 2 :(得分:2)

这样的事情应该这样做:

var $this = $(this),
    size  = $this.length,
    last_index = size -1;

$this.find('td').each(function (index) { 

     if(index == 0) { 
         // FIRST

     } else if(index === last_index) {
         // LAST

     } else {
         // ALL THE OTHERS

     }

});

答案 3 :(得分:-2)

如果你想要的只是最后一列,你可以使用

$(this).find('td:last')

如果您想对其他列进行操作,请转到

$(this).find('td:last').addClass("last");
$(this).find('td').each(function() {
   if ($(this).hasClass("last")) {
      // this is the last column
   } else {
      // this isn't the last column
   }
});

如果您对此感到满意,可以使用data()代替addclass()

如果您想要做的只是在字符串末尾没有逗号,那么您可以随后将其删除:

storageVAR = storageVAR.substr(0, (storageVAR.length - 1);