2011-10-04 90 views
51

我必須.unbind()來自父節點的所有元素。如何在jQuery中從父級選擇所有子級(在任何級別)?

如何從父母中選擇所有孩子(在任何級別)?

嘗試:

$('#google_translate_element *').unbind('click'); 

,但它僅適用於第一個孩子的水平......

Here有一個測試用例

+0

你有一個測試案例證明這一點? – lonesomeday

+2

難道你不能只做$('#google_translate_element')。find('*')。unbind('click'); – rickyduck

回答

100

使用jQuery.find()找到孩子多個級別深。

.find()和.children()方法類似,但 後者只沿DOM樹向下傳遞單個級別。

$('#google_translate_element').find('*').unbind('click'); 

您需要'*'find():在呼叫

在不同的樹遍歷方法休息,需要選擇 表達.find()。如果我們需要檢索 所有的後代元素,我們可以通過通用選擇器 '*'來完成此操作。

+0

我現在正在使用此權限,但是我是否必須擔心性能? – ProblemsOfSumit

+1

是的,offcourse。你應該總是擔心表現。現代瀏覽器的執行速度相當快,但如果遇到此特定代碼段的問題,請儘量保持父元素較小(不要太多兒童)或將子項分組到較小的集合中。 – Konerak

16

我認爲你可以這樣做:

$('#google_translate_element').find('*').each(function(){ 
    $(this).unbind('click'); 
}); 

但它會引起大量的開銷

相關問題