问题:给定一个特定的容器 dom 元素(窗口、div、fieldset 等),在该 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 是 FormWidgets,但由于该函数不允许在其他 .FormWidgets 内部查找 FormWidgets,因此无法包含它们。.FormWidget 字段集中的任何内容都是禁止的。
示例 2:
$('#MyFieldset').findButNotInside('.FormWidget');
应该只返回#Field1
and #SomeWidget
。它应该寻找.FormWidget
目标字段集内的 s #MyFieldset
,但不应返回 #Field2,因为它不允许查看 .FormWidget(在本例中为 #SomeWidget)内部来查找其他 .FormWidget。
我认为这可以通过正确的函数和选择器来完成,但我不确定应该如何构造该选择器?