当单击页面上的任何不是它们或其容器(div.dropdown_container
)的元素时,我试图隐藏一些li
元素。但我似乎无法让它工作。
$("body").on("click", "*:not(div.dropdown_container, div.dropdown_container > *)", function(e){
// don't want to hide the very first `li`
// it contains a span i want always to show
$("ul.dropdown_ul > li:not(#first)").hide();
});
JSBIN - very last function on the page
如何更改此设置,以便所有内容都能获取此监听器,但不能获取 div.dropdown_container 或其中的任何子元素?
最佳答案
这应该可以。
e.target
获取被单击的元素。
因此,这将检查点击是否是在 div 本身或其任何子级上生成的。
$("body").on("click",function(e) {
if( $(e.target).is('div.dropdown_container')
|| $(e.target).closest('div.dropdown_container').length) {
// do something
}
else {
// do something else
}
});
关于javascript - 注册单击 body 上除 div 及其所有子项之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17226145/