Javascript 检测单击是否不是某些特定的div
我正在开发一种水平菜单,但单击时可见,单击时隐藏,但当单击位于某个箭头上时可见,而当单击位于文档上时隐藏,但不在某个div容器上。在该div容器中还有一些其他元素。如果我们编写Javascript 检测单击是否不是某些特定的div,javascript,jquery,mouseevent,dom-events,unobtrusive-javascript,Javascript,Jquery,Mouseevent,Dom Events,Unobtrusive Javascript,我正在开发一种水平菜单,但单击时可见,单击时隐藏,但当单击位于某个箭头上时可见,而当单击位于文档上时隐藏,但不在某个div容器上。在该div容器中还有一些其他元素。如果我们编写document.onclick=closingfunction,那么无论用户是否单击该div本身,它都会关闭。我想在用户单击任意位置时调用closefunction,但不在该div本身或箭头上 似乎会有它的解决方案,但我还没有找到,所以这就是为什么在这里发布它。使用Prototype,您可以做类似的事情 docu
document.onclick=closingfunction
,那么无论用户是否单击该div本身,它都会关闭。我想在用户单击任意位置时调用closefunction
,但不在该div本身或箭头上
似乎会有它的解决方案,但我还没有找到,所以这就是为什么在这里发布它。使用Prototype,您可以做类似的事情
document.observe('click', function(ev) {
var el = Event.element(ev);
if ((el !== $('thediv'))
&& !el.descendantOf(thediv)) {
// hide div here
}
});
您可以使用jQuery的closest()查看单击是否在菜单中: 可以使用jQuery is()函数检测当前目标是否与特定选择器匹配:
$('ul.container li').click(function(e){
if ($(e.target).is('.dropdown')) {
//do something when clicked inside dropdown
}
})
哈哈,甚至没有看到标签,读了问题,看到了文档。onclick=。。。虽然OP没有使用框架,但看到了一个漏洞;)不用担心,它也给了我一个想法,虽然jquery显然对我更有用,但如果可以尽量减少无用事件的数量,它最好更具体一些。
$('ul.container li').click(function(e){
if ($(e.target).is('.dropdown')) {
//do something when clicked inside dropdown
}
})