2010-12-15 14 views
4

Ich weiß, dass jede Funktion über ein Array iteriert. Gibt es einen Weg, um auf die Indices wie (dieses [i]) zuzugreifen? Ich muss in der Lage sein, das PubDate des aktuellen Elements mit dem PubDate des vorherigen Elements zu vergleichen, und wenn es anders ist, ein neues PubDate auszugeben.Wie bekomme ich das vorherige Element mit 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>"); 

     }); 

Antwort

-1

können Sie diese verwenden und durchqueren

zum Beispiel

this.parent() 

Sie den Index wäre

oder

i in your loop 
6

Eine von vielen möglichen Wege gibt:

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; 
    }); 

Sie müssen prüfen, ob vorherige nicht null ist, da die erste Iteration einen Nullwert (das erste Element hat kein vorheriges Element) enthalten wird.

+0

ziemlich süß, danke! – steve

+2

Da es eine ziemlich spezifische Sache für die einzelnen ist, empfehle ich, alles in eine '(function() {// code by shanked //}()) zu schreiben, die' vorhergehende' außerhalb des Bereichs von irgendetwas anderem hält dein Code. –

+1

Ich lese das zuerst als '// Code shanked' –

0

Wie wäre es so etwas wie

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