0

:lastセレクターが複数の要素を返す場合があります。信じがたいので、それを試すための jsfiddle があります。

コード 1 は失敗します:

alert($(".child").find("span:last").length); // -> alerts 3

jQuery ドキュメント:

説明: 最後に一致した要素を選択します。

:last は、現在の jQuery コレクションをフィルタリングし、その中の最後の要素と一致させることによって、単一の要素を選択することに注意してください。

何か不足していますか、それともバグですか?

4

3 に答える 3

3

とを使用.find()する:firstと、を使用して検出された各祖先要素:lastを基準にして、最初と最後の要素が検索されます。$('.child')

3.childつの要素があるため、sを検索するための3つの要素がありますspan。それぞれ.childに正確に1つあるのでspan:lastのコンテキストでこれら3つのそれぞれを表示します.find()。次に.find()、それらをすべてまとめて収集するとspan、結果として3つの要素が得られます。

于 2012-11-23T12:50:25.380 に答える
0

それは正常です、私はあなたが必要とするものだと思います:

alert( $(".child:last").find("span:last").length );

それ以外の場合は、選択として「子」のみを使用すると、常に最初に入力されます。

于 2012-11-23T12:52:40.097 に答える
0

テストを分析すると、次のようになります。

var matches = [];
$('.child').each(function(){
    //get collection of all spans in the element
    var collection = $('span',this);

    //NOTE: There is only 1 span in collection at this point

    //get last element
    var match = collection.last();
    matches.push(match);
});
alert(matches.length); //which is obviously 3
于 2012-11-23T13:04:37.267 に答える