Как выбрать только одного брата с 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