2012-08-15 49 views

回答

2

你可以嘗試使用未功能:

$('*').not($('#ancestorID').find('*')); 

注意,這將是非常緩慢。

+0

+1了一種直列選擇器。 – Blender 2012-08-15 19:47:40

+0

任何方式來加速? – user730569 2012-08-15 19:54:39

+1

@ user730569我認爲你必須重新考慮你的設計。不管你做什麼,這將遍歷整個DOM兩次。 – jbabey 2012-08-15 20:02:05

2

使用.filter()

$('*').filter(function() { 
    return $(this).parents('svg').length == 0; 
}); 

另外,我覺得有document.getElementsByTagName('*')更換了jQuery *選擇可能會給你一個速度提升。

+0

+1良好的過濾器使用情況。 – jbabey 2012-08-15 19:47:17

+0

你會如何使用它與純JavaScript的速度提升? – user730569 2012-08-15 19:55:14

0

http://api.jquery.com/not/

$('*').not('svg *'); 
+0

會'svg *'匹配所有的後代,或只有直接的孩子? – jbabey 2012-08-15 19:48:19

+0

@ jbabey所有的後代(以匹配直接的孩子,這將是'svg> *'') – nbrooks 2012-08-15 19:48:36

相關問題