如果我有一个jQuery .click()事件同时触发“body”和“div”,那么当点击div时,我怎么才能让它只执行div而不是body?基本上,我正在创建自己的上下文菜单,我想点击元素外的任何地方(在这种情况下,“div.button”)来关闭菜单。
基本的例子:
$("body").click(function(event){
if($("div.menu").is(":visible")){
$("div.menu").hide();
}
});
$("div.button").click(function(event){
$("div.menu").show();
});
你可以猜到,$(“body”)。click()会阻止/隐藏菜单甚至显示。
非常感谢一点指导。谢谢你的阅读!
答案 0 :(得分:6)
http://api.jquery.com/event.stopPropagation/
event.stopPropagation()
答案 1 :(得分:5)
你必须停止传播像这样的事件
$("div.button").click(function(event){
event.stopPropagation();
// do something
});
仅点击您的按钮
答案 2 :(得分:1)
您想在click元素中使用event.stopPropagation()
。所以:
$( 'div.button' ).click(function( e ) {
e.stopPropagation();
$( 'div.menu' ).show();
});