我想只選擇給定類型的子元素的第一個「圖層」,但不是嵌套在另一個限定元素內的元素。例如。在:jQuery/JavaScript:僅選擇兒童的第一個「圖層」
<div id='top'>
<div id="s1" class="special">
<div id="s2" class="special"></div>
</div>
<div>
<div id="s3" class="special"></div>
</div>
</div>
我想找到#S1和S3#,而不是#S2,用類似$( '#' 頂部)找到( '特殊:not_nested')。 jQuery有可能嗎? XPATH?
我想到了像expr [':']。not_nested這樣的jQuery自定義過濾器,但無法弄清楚如何考慮頂級父級(在這種情況下爲$('#top')),因爲有可能成爲#top的母鏈中的其他特殊類別。
我現在應該提及我正在使用遞歸調用$ .fn.children(),我認爲這不是很有效。
[EDIT2]測試工作代碼:
var node = $('#top'),
result = (node.find('.special').filter(function(){
return !($(this).parent().closest(".special", node).length);
}));
但是,如果 「#top返回」 有。特別類本身這不起作用。因此,也許這樣的:
var node = $('#top'),
result= node.find('.special').filter(function(){
var parent = $(this).parent().closest(".special", node);
return !parent.length || parent.is(node);
});
http://api.jquery.com/children/ – Dave
這不會發揮作用,因爲它只發現直接的孩子,我需要找到孫子們,只要他們沒有嵌套在「特殊」的另一個孩子/孫子之下, 。 – user1066127
檢查我的編輯,它爲此添加了一個檢查 –