Как выбрать только одного брата с jQuery?
у меня есть этот код:
<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>
и
$(".baz").click(function() {
    alert("test: " + $(this).siblings(".bar")[0].text()); // Doesn't work
});
siblings(".bar")[0] не работает. (не появляется окно предупреждения и нет ошибки javascript)
каков правильный способ выбрать только одного брата ?
Edit: Я не хочу использовать prev() или next().
6 ответов
можно использовать eq способ уменьшить набор элементов по определенной индекса:
$(this).siblings(".bar").eq(0).text()
это позволит выбрать первый элемент в наборе. В вашем случае вы можете просто использовать prev, поскольку элемент, который вы ищете, находится непосредственно перед нажатым элементом:
$(this).prev(".bar").text()
проблема с методом нотации массива, который вы использовали, заключается в том, что он возвращает фактический узел DOM, содержащийся в объекте jQuery, и это не будет text метод. eq является эквивалентным методом jQuery для этого.
вы также можете захватить первый элемент из объекта jQuery, используя first:
alert(siblings(".bar").first().text());
http://api.jquery.com/next/ и / или http://api.jquery.com/prev/.
Так было бы:
$(this).prev().text()); или $(this).next().text());
вы можете использовать next () или prev ();
$(".baz").click(function() {
    alert("test: " + $(this).prev(".bar").text());
});
скрипка здесь http://jsfiddle.net/fMT5x/2/
вы можете:
$(".baz").click(function() {
    alert("test: " + $(this).prev.html());
});
но вы должны быть уверены ,что предыдущий элемент существует.бэз
или (лучше)
$(".baz").click(function() {
    alert("test: " + $(this).siblings(".bar").eq(0).text());
});
или (хуже), просто для справки, никогда не используйте его:)
$(".baz").click(function() {
    var text = 0;
    $(this).siblings(".bar").each(function(){ text = $(this).text(); break; });
    alert("test: " + text);
});
вот ссылка, которая полезна для изучения выбора элемента братьев и сестер в Jquery.
Как выбрать только одного брата с jQuery
$("selector").nextAll(); 
$("selector").prev(); 
вы также можете найти элемент с помощью jQuery селектора
$("h2").siblings('table').find('tr'); 
для получения дополнительной информации, см. Эту ссылку next (), nextAll(), prev(), prevAll (), найти () и братьев и сестер в JQuery