2010-12-15 47 views
4

Je connais la fonction chaque itération sur un tableau. Y at-il moyen d'accéder à l'indice comme (this [i])? Je dois pouvoir comparer pubDate de l'élément courant avec pubDate de l'élément précédent et s'il est différent de sortir un nouveau pubdate.comment obtenir l'élément précédent avec 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>"); 

     }); 

Répondre

-1

vous pouvez utiliser et traverser

par exemple

this.parent() 

vous donne l'indice

ou

i in your loop 
6

L'une des nombreuses façons possibles seraient:

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

Vous devez vérifier si précédent est non nul, puisque la première itération contiendra une valeur nulle (le premier élément n'a aucun élément précédent).

+0

assez doux, merci! – steve

+2

Puisqu'il est assez spécifique à chacun, je recommande de tout jeter dans un '(function() {// code par shanked //}())' qui gardera 'previous' hors de portée de quoi que ce soit d'autre votre code. –

+1

J'ai d'abord lu cela comme '// code to be shanked' –

0

Que diriez-vous quelque chose comme

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