получить последнюю итерацию в jquery каждый - PullRequest
9 голосов
/ 28 января 2012

У меня есть следующий код, который я просматриваю столбцы таблиц, и если это последний столбец, я хочу, чтобы он делал что-то другое.Сейчас он жестко запрограммирован, но как я могу изменить его, чтобы он автоматически знал свой последний столбец

$(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 ]

13 голосов
/ 28 января 2012

Если вы хотите получить доступ к длине внутри обратного вызова .each(), вам просто нужно заранее получить длину, чтобы она была доступна в вашей области.

var cells = $(this).find('td');
var length = cells.length;
cells.each(function(i) {
    // you can refer to length now
});
6 голосов
/ 28 января 2012

Похоже, ваша цель - составить список значений через запятую, почему бы вам не собрать значения и не использовать метод массива 'join'?

var values = []
$(this).find('td .' + classTD).each(function(i) {
  if (i > 0) values.push($(this).val());
});
storageVAR = values.join(',');
2 голосов
/ 28 января 2012

Что-то вроде этого должно сделать это:

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

     }

});
0 голосов
/ 28 января 2012

Если все, что вам нужно, это последний столбец, вы можете использовать

$(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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...