5

特定のセレクターに一致する場合に変更したい要素の既存のコレクションがあります。これらのアイテムの子孫に対して(再帰的に)同じことをしたいです。の機能のようですjQuery( selector [, context ] )。ただし、結果のセットには親要素は含まれません。私もそれらを照会したい。これはコマンド 1 つで実行できますか?

例えば、

var els = $('<div foo="bar">')
$("[foo]", els ); // finds nothing
els.filter("[foo]"); // finds div 

ただし、フィルターは子孫を検索しないため、

var els = $('<div foo="bar"><span foo="foobar"></div>')
$("[foo]", els ); // finds span
els.filter("[foo]"); // finds div

span と div の両方を見つける最良の方法は何ですか? 両方のコマンドを使用しますか? 両方を見つけるための単一行コマンドはありますか? とにかくこれより良いですか?

var els = $('<div foo="bar"><span foo="foobar"></div>')
var selection = $("[foo]", els ); // finds inner elements
selection = selection.add(els.filter("[foo]")); // then adds on parents that match the selector
4

1 に答える 1

2

コンテキストは、内で検索する要素または要素のコレクションを提供するためのものです。つまり、それらの要素の子孫です。のようにフィルタリングする.filterのではなく、より似てい.findます。

両方が必要な場合は、両方を使用する必要があります。

$("[foo]", els ).add( els.filter("[foo]") );

または親要素を使用します。

$("[foo]", $("<div>").html(els) );

だから、いいえ、より良い方法はありません。

2 番目の方法は、jQuery の .load メソッドがどのようにそれを行うかですが、それ以上の方法はないと思います。

https://github.com/jquery/jquery/blob/1.9-stable/src/ajax.js#L176

于 2013-05-15T18:27:49.530 に答える