2010-08-30 5 views
2

Ok, donc voici ce que j'ai:Trouver le frère d'un élément dans une liste d'éléments

J'ai une liste d'éléments mises en cache dans une variable:

elementList = $(".list-of-elements-with-this-class"); 

J'ai également généré dynamiquement élément de cette liste en cache dans une autre variable:

elementList.click(
    function() 
    { 
     cachedItem = $(this); 
    } 
); 

ce que je veux faire est de localiser cachedItem dans elementList puis sélectionnez frères et soeurs précédent ou suivant de cachedItem dans la liste.

le code Alors pseudo ressemblerait à ceci:

nextCachedItem = elementList.find(cachedItem).next(); 

ou

prevCachedItem = elementList.find(cachedItem).prev(); 

De toute évidence, le ne fonctionne pas au-dessus. :-)

Merci pour votre aide à l'avance!

-Tim.

+0

[Ce] (http://api.jquery.com/next/) peut être utile. – Andy

Répondre

2

Je crois next() et prev() traitent avec l'élément DOM, pas la nodelist jQuery retourné par une requête. Par conséquent, vous devez traiter les index de la nodelist dans l'objet jQuery manuellement.

Essayez:

// RAW DOM Nodes 
elementList.get(elementList.index(cachedItem) - 1); // previous 
elementList.get(elementList.index(cachedItem) + 1); // next 

OU:

// jQuery Objects/Node list 
elementList.eq(elementList.index(cachedItem) - 1); // previous 
elementList.eq(elementList.index(cachedItem) + 1); // next 
+0

Génial! Cependant, ce qui précède renvoie l'attribut href des balises d'ancrage qui composent elementList. – scullytr

+0

@scullytr: Cela peut être dans la façon dont vous essayez de l'utiliser ... qu'est-ce que vous essayez de faire avec le résultat des opérations ci-dessus? Par exemple si vous essayez simplement de le lancer dans une alerte, alors ce comportement est attendu car il va utiliser la représentation de chaîne qui est la valeur HREF. – prodigitalson

+0

Je voudrais ajouter une classe au nœud frère et à son parent – scullytr