【发布时间】:2012-05-20 04:05:07
【问题描述】:
如何使用 CSS 或 jQuery 选择除给定元素及其后代之外的所有 DOM 元素?
假设给定的元素是#test
$('#test *') 将返回所有#test 后代
--但是--
$('* :not(#test))')或$('* :not(#test *))')或$('*').not('#test')或$('*').not('#test *')
不工作!
编辑:
我想在单击页面上除#test 区域之外的任何位置时触发单击事件。
【问题讨论】:
-
出于什么目的?目的会影响我们应该给出的答案。
-
我想在点击页面上除
#test区域之外的任意位置时触发点击事件。 -
你试过这个
$("*").not("div#test > *") -
是的,我做到了。但这仅适用于直系子女,而我需要排除
#test的所有后代,无论深度如何。 -
这个选择器是
:not(#test, #test *),它只能作为一个jQuery选择器工作。您不只使用其中之一(“OR”);相反,您需要将其中两个结合起来。
标签: jquery css dom jquery-selectors