J'ai ce code:
<ul>
<li class="foo">foo text</li>
<li class="foo2">foo2 text</li>
<!-- more li here -->
<li class="bar">bar text</li>
<li class="bar2">bar2 text</li>
<!-- more li here -->
<li class="baz">clickme!</li>
</ul>
et
$(".baz").click(function() {
alert("test: " + $(this).siblings(".bar")[0].text()); // Doesn't work
});
siblings(".bar")[0]
ne fonctionne pas. (aucune boîte d'alerte n'apparaît et aucune erreur javascript)
Quelle est la bonne façon de sélectionner un frère ou une sœur seulement?
Edit: Je ne veux pas utiliser prev()
ou next()
.
Vous pouvez utiliser la méthode eq
pour réduire l'ensemble d'éléments mis en correspondance à un à un index spécifique:
$(this).siblings(".bar").eq(0).text()
Cela sélectionnera le premier élément de l'ensemble. Dans votre cas, vous pouvez simplement utiliser prev
, car l'élément que vous recherchez vient directement avant l'élément cliqué:
$(this).prev(".bar").text()
Le problème avec la méthode de notation de tableau que vous utilisiez est qu'elle retourne le nœud DOM réel contenu dans l'objet jQuery, et cela ne va pas avoir de méthode text
. eq
est la méthode jQuery équivalente pour ce faire.
Vous pouvez également extraire le premier élément d'un objet jQuery en utilisant d'abord:
alert(siblings(".bar").first().text());
http://api.jquery.com/next/ et/ou http://api.jquery.com/prev/ .
Ce serait donc:
$(this).prev().text());
ou $(this).next().text());
Vous pouvez utiliser next () ou prev ();
$(".baz").click(function() {
alert("test: " + $(this).prev(".bar").text());
});
violon ici http://jsfiddle.net/fMT5x/2/
Vous pouvez soit faire:
$(".baz").click(function() {
alert("test: " + $(this).prev.html());
});
MAIS, vous devez être sûr qu'un élément précédent existe pour .baz
Ou mieux)
$(".baz").click(function() {
alert("test: " + $(this).siblings(".bar").eq(0).text());
});
OU (PIRE), juste pour référence, ne l'utilisez jamais :)
$(".baz").click(function() {
var text = 0;
$(this).siblings(".bar").each(function(){ text = $(this).text(); break; });
alert("test: " + text);
});
Voici un lien qui est utile pour en savoir plus sur la sélection d'un élément frère dans Jquery.
Comment sélectionner un seul frère avec jQuery
$("selector").nextAll();
$("selector").prev();
vous pouvez également trouver un élément en utilisant le sélecteur Jquery
$("h2").siblings('table').find('tr');
Pour plus d'informations, reportez-vous à ce lien next (), nextAll (), prev (), prevAll (), find () et frères et sœurs dans JQuery