jQueryで子供の子供を選択できないのはなぜですか? .children()
メソッドと>
セレクタを使用して、子の子にクラスを追加したいと思います。以下のコードを参照してください:子供の子供を選択する
$(function(){
// main expansion element
$(".expander").click(function() {
var subShown = $(this).children("ul > li").hasClass("show");
if (!subShown) {
$(this).children(".indented").slideDown('100').addClass("show");
$(this).children(".caret").addClass("reversedCaret");
} else {
$(this).children(".indented").slideUp('100').removeClass("show");
$(this).children(".caret").removeClass("reversedCaret");
}
});
});
HTML:私はexpander
をクリックすると
<div class="expander">
<span class="caret downCaret right visibleCaret">+</span>
<ul>
<li class="category">Item 1<a href="http://www.google.com"></a></li>
<li class="indented"><a href="http://www.google.com">Item 2</a></li>
<li class="indented"><a href="http://www.google.com">Item 3</a></li>
</ul>
</div>
それは私のli
要素にクラスを追加しません。どうして? .children()
にJQuery documentationから
'li'(何'子供であるエクスパンダ、のではない直接の子です) 'が返ってくる。 'children()'の代わりに 'find()'を使う必要があります。 'children()'は本質的に 'find( '> *')'と同じです。 – Taplar
'.find()'を試しましたが、正しく動作させることができませんでした。それは '.children()'の前後に行きますか? – kawnah
Scottのソリューションを見てください。あなたは子どもを()使ってはいけません。 – Taplar