jQueryで要素の子を見つける最善の方法は何かと思っていますが、「検索」に親も含めます。
これが私の単純化された基本的な HTML セットアップです。
<div id="container">
<form id="form1"> <!-- form 1 content --> </form>
<form id="form2"> <!-- form 2 content --> </form>
</div>
そして、私はこのような機能が欲しい...
function getForms ($container)
{
// Option 1
var $allForms = $container.find('form').andSelf().filter('form');
// Option 2
var $allForms = $container.find('form');
if ($container.is('form')) $allForms.add($container);
// Should return all the forms in the container if passed $('#container')
// Or return just one form if passed $('#form1')
return $allForms;
}
私は、オプション 1 または 2 の両方が機能することを確信しています。上記のどのオプションがより効率的か知っている人はいますか? よりエレガントまたはより効率的な他のオプションはありますか?
編集:オプション 2 の.is() には満足できませんでした。コンテナーに複数の jQuery オブジェクトが含まれていると機能しなかったからです。だから私はこのようなものを思いついた:
// Option 3
function getContainerElements ($container, selector) {
return $container.find(selector).add($container.filter(selector));
}
あまりテストしていませんが、すべての一般的なケースで機能すると思います。