問題: 特定のコンテナー DOM 要素 (ウィンドウ、div、フィールドセットなど) が与えられた場合、その DOM 要素内のクラス (.FormWidget) のすべての要素を見つけ、そのコンテナーのすべての子孫を再帰的に検索します。一致するクラス (.FormWidget) を持つ要素を含めますが、内部は調べません。要素はnレベルまでネストできます。
たとえば、次の HTML があるとします。
<fieldset id="MyFieldset" class="FormWidget FieldSetMultiplier">
<legend>My Legend</legend>
<div>
<label for="Field1">Field1</label>
<input type="text" name="Field1" value="" id="Field1" class="BasicInput FormWidget">
</div>
<div id="SomeWidget" class="FormWidget">
<label for="Field2">Field2</label>
<div name="Field2" id="Field2" class="FormWidget RestrictedComboBox"></div>
<input type="text">
</div>
</fieldset>
<div>
<label for="Field3">Field3</label>
<input type="text" name="Field3" value="" id="Field3" class="BasicInput FormWidget">
</div>
例 1:
疑似 Jquery 関数 ".findButNotInside()" で、探している機能を表現します。
$(document).findButNotInside('.FormWidget');
#MyFieldset と #Field3 のみを返す必要があります。ウィンドウから開始すると、フィールド 1 と 2 および #SomeWidget は FormWidget ですが、関数が FormWidget を見つけるために他の .FormWidget 内を参照することが許可されていないため、これらを含めることはできません。.FormWidget フィールドセット内のものはすべて立ち入り禁止です。
例 2:
$('#MyFieldset').findButNotInside('.FormWidget');
とのみを返す必要が#Field1
あり#SomeWidget
ます。.FormWidget
対象のフィールドセット内にある を検索する必要#MyFieldset
がありますが、.FormWidget (この場合は #SomeWidget) 内を参照して他の .FormWidget を検索することは許可されていないため、#Field2 を返すべきではありません。
これは正しい関数とセレクターを使用して実行できると考えていますが、そのセレクターをどのように構築すればよいかわかりませんか?