我們正在使用一個框架來創建由屬性data-type=[some data type]
標識的任意嵌套的HTML數據元素。其中每個可以包含直接輸入字段以及其他data-type
,可以是單例或數組。嵌套結構唯一的優點是在任何深度都不會包含相同類型的data-types
。複雜的JQuery選擇器 - 如何選擇一個任意的「代」?
的HTML我必須工作,
<div data-type='project' id='example1'>
<input name='start-date'/>
<div data-type='project-lead' id='example2'>
<input name='department'/>
<input name='email'/>
<div data-type='analyst'>
<input name='department'/>
<input name='email'/>
</div>
<div data-type='analyst'>
<input name='department'/>
<input name='email'/>
</div>
<div data-type='analyst'>
<input name='department'/>
<input name='email'/>
</div>
</div>
<div class="JustToMakeMyLifeMoreDifficult">
<div data-type='sponsor'>
<input name='department'/>
<input name='email'/>
</div>
<div data-type='sponsor'>
<input name='department'/>
<input name='email'/>
</div>
</div>
</div>
選擇問題
我需要一個jQuery找到選擇它得到了我一套data-type
要素之一data-type
水平下方給定對象:
myData($obj){
return $obj.find('[data-type]').not([data-type elements further down]);
}
使得:
myData($('#example1'))
myData($('#example2'))
分別得到jQuery的結果:
[project-lead,sponsor,sponsor]
[analyst, analyst, analyst]
JQuery的嚮導,請幫助我。你是唯一可以的。
回答
這是不可能的jQuery選擇。我裹着帕特里克下面很優雅的解決方案爲廣義JQuery的功能 -
(function($){
$.fn.dataChildren = function(_selector) {
var iter = this;
var res = this.children(_selector);
while ((iter = iter.children(':not(' + _selector +')')).length) {
res = res.add(iter.children(_selector));
}
return res;
};
})(jQuery);
這樣:
$('#example1').dataChildren('[data-type]')
作品,如上所述。 I < 3 SO。
在我看來,你想要有一個* data- *屬性的div childNodes,而對於那些沒有它的,獲取div的childNodes。那是對的嗎? – RobG