jquery find のバグに気付きました。
foo 自体を参照する可能性のあるセレクターを使用して foo.find を呼び出すと、機能しません。ここに例を示します。
http://jsfiddle.net/CgfPj/6/ (編集: フィドルを更新して、私がやろうとしていることをより明確に説明します)
test.find は、div の子であるスパンを見つけることができるはずですが、div 自体がテストであるため、検出できないようです。これはバグですか?
jquery find のバグに気付きました。
foo 自体を参照する可能性のあるセレクターを使用して foo.find を呼び出すと、機能しません。ここに例を示します。
http://jsfiddle.net/CgfPj/6/ (編集: フィドルを更新して、私がやろうとしていることをより明確に説明します)
test.find は、div の子であるスパンを見つけることができるはずですが、div 自体がテストであるため、検出できないようです。これはバグですか?
#test
div
あなたが参照しているのです。
.find()
#test
指定されたセレクターに一致する子孫を返します。#test
子孫がないdiv
ため、test.find("div > span")
どの要素とも一致しません。
あなたの直系span
の子孫を取得するには、#test
以下を使用する必要があります。
test.find("> span")
OP編集に従って編集:
$("#test > span, #test div > span")
のすべてspan
の直接の子孫と、 -fiddleの内部の#test
すべてのspan
要素の直接の子孫を取得します。div
#test
:parentIs(div)
私の知る限り、CSSセレクター仕様にもjQueryにもセレクターのようなものはありませんが、フィルター関数を使用することでそのギャップを簡単に埋めることができます。
var spans = test.find('span').filter(function() {
return $(this).parent()[0].tagName.toLowerCase() === 'div';
});
$("#result").text(spans.length);
私がこの権利を見ているなら..
var test = $("#test");
$("#result").text(test.find("div > span").length)
$("#result2").text($("div > span").length)
test
div自体である要素として定義することによって。基本的find
に、そのdivにスパンを持つ別のdivを探すように指示します。試す
$("#result").text(test.find("span").length)
<div id="test">
<span>hello</span>
</div>
$("#result").text(test.find("div > span").length)
長さ = 0 という出力は完全に正しいです。これはバグではなく、予期される動作です。
スパンは#testで div 内にネストされています
test.find("div > span")
// #test div 内にネストされた div の子であるスパンを見つけようとしています。#test 内に div がないため、0 が返されます。
この場合、1 を返す HTML は
<div id="test">
<div>
<span>hello</span>
</div>
</div>