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: p> jQuery: p>
4 Réponses :
Vous voulez quelque chose comme ceci: P> 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.
$(".rating_boxes").index(this); // select by class
Si vous souhaitez connaître la position de la zone de notation, une manière plus robuste est d'utiliser: 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. P> p>
J'ai tendance à éviter d'utiliser pour obtenir l'index. appelant Par exemple, P> index () code> dans jQuery 1.3.2 et précédent car il se sent non intuitif à utiliser. J'utilise simplement
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>
$("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');
});
Je voudrais uppoter cela 20 fois si je pouvais. .index () n'a pas de sens.
S'il y a une div ou une section qui contient également IMG avant cette div, la solution p>
var index = $ (ceci) .prevall (). longueur; p> blockQuote>
ne fonctionnera pas car il donne la même réponse que d'utiliser p>
$ (ceci) .index (); p> blockQuote>
La solution qui fonctionne bien pour l'un de ces scénarios est p>
var index = $ (ceci) .parent (). Rechercher ("img"). Index (this); P> blockQuote>
Je viens d'appliquer ces deux méthodes pour résoudre mon problème. P>