我试图隐藏一些li
元素,当页面上的任何元素被点击,不是他们或他们的容器(div.dropdown_container
)。但我似乎不能让它工作。
$("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 -页面上最后一个函数
我如何改变这一点,使一切得到这个监听器,而不是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
}
});