2010-12-15 4 views
4

Я знаю, что каждая функция выполняет итерацию по массиву. Есть ли способ получить доступ к индексу вроде (это [i])? Мне нужно иметь возможность сравнивать pubDate текущего элемента с pubDate предыдущего элемента, и если это другой выход, то новый pubdate.Как получить предыдущий элемент с jquery each()

$(data).find('item').each(function(i, value){ 
      var title = $(this).find('title').text().replace(/\w+\s+\(.*?\)/, ""); 
      var link = $(this).find('link').text(); 
      var pubDate = $(this).find('pubDate').text(); 
      alert(title); 
      alert(link); 
      alert(pubDate); 
      $('#events').append("<p>" + title + "<br/>" + link + "</p>"); 

     }); 

ответ

-1

вы можете использовать это и траверс

, например

this.parent() 

дает индекс

или

i in your loop 
6

Один из многих возможных путей было бы:

var previous = null; 
$(data).find('item').each(function(i, value){ 
     if (previous) { 
      ... do stuff with previous element ... 
     } 

     var title = $(this).find('title').text().replace(/\w+\s+\(.*?\)/, ""); 
     var link = $(this).find('link').text(); 
     var pubDate = $(this).find('pubDate').text(); 
     alert(title); 
     alert(link); 
     alert(pubDate); 
     $('#events').append("<p>" + title + "<br/>" + link + "</p>"); 

     previous = this; 
    }); 

Вы должны проверить, не является ли предыдущее значение недействительным, поскольку первая итерация будет содержать нулевое значение (первый элемент не имеет предыдущего элемента).

+0

довольно мило, спасибо! – steve 2010-12-15 16:19:37

0

Как о чем-то вроде

var previousDate = $(this).prev().find('pubDate');