私はこのコードを持っています:
_<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エラーもありません)
1人の兄弟だけを選択する適切な方法は何ですか?
編集:prev()
またはnext()
を使用したくありません。
Firstを使用して、jQueryオブジェクトから最初の要素を取得することもできます。
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に存在することを確認する必要があります
または(より良い)
$(".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で兄弟要素を選択する方法を学ぶのに役立つリンクを次に示します。
$("selector").nextAll();
$("selector").prev();
jqueryセレクターを使用して要素を見つけることもできます
$("h2").siblings('table').find('tr');
詳細については、このリンクを参照してください next()、nextAll()、prev()、prevAll()、find()およびJQueryの兄弟