11
votes

Problème avec l'indice JQuery ()

Il doit y avoir quelque chose de simple, je manque. J'essaie d'obtenir l'index de l'élément mais continuez à obtenir -1.

html: xxx

jQuery: xxx


0 commentaires

4 Réponses :


12
votes

index () code> renvoie l'index de l'élément donné avec une liste d'éléments, non au sein d'un élément parent. Pour trouver l'index de l'image cliquée, vous devez trouver toutes les images, pas le parent em> de toutes les images.

Vous voulez quelque chose comme ceci: P>

$(".rating_boxes").index(this); // select by class


0 commentaires

6
votes

Si vous souhaitez connaître la position de la zone de notation, une manière plus robuste est d'utiliser: xxx

i.e., calculez le nombre d'éléments IMG avant cet élément. La méthode d'index nécessite d'abord sélectionner l'élément parent, puis tous les éléments IMG à l'intérieur. C'est un peu plus vite.


0 commentaires

25
votes

J'ai tendance à éviter d'utiliser index () code> dans jQuery 1.3.2 et précédent car il se sent non intuitif à utiliser. J'utilise simplement xxx pré>

pour obtenir l'index. appelant taille () code> sur prevall () code> renvoie simplement la valeur de la propriété code> de la longueur code>, donc je préfère simplement utiliser la longueur directement et sauter le supplément Appel de fonction. p>

Par exemple, P>

$("img.ratingbox").hover(function() {
    var index = $(this).prevAll().length;
    alert(index);
    $(this).attr('src', '/img/ratingbox-selected.gif');
}, function() {
    $(this).attr('src', '/img/ratingbox.gif');
});


1 commentaires

Je voudrais uppoter cela 20 fois si je pouvais. .index () n'a pas de sens.



0
votes

S'il y a une div ou une section qui contient également IMG avant cette div, la solution

var index = $ (ceci) .prevall (). longueur;

ne fonctionnera pas car il donne la même réponse que d'utiliser

$ (ceci) .index ();

La solution qui fonctionne bien pour l'un de ces scénarios est

var index = $ (ceci) .parent (). Rechercher ("img"). Index (this);

Je viens d'appliquer ces deux méthodes pour résoudre mon problème.


0 commentaires