我有一个自定义的右击菜单,同时注册了隐藏事件,代码如下:
$(window).on('contextmenu click', function (e) { m.hide(); });
当我单击页面时,监视m.hide()发现执行了好几次,原因我想大概是事件冒泡,现在我想m.hide()代码只执行一次,如何修改代码?
我看你的代码不像是冒泡引起的问题啊,冒泡是从元素本身冒泡到document(有些浏览器是window),你这是window不会发生冒泡事件啊,如果发生应该是捕获事件,但是看着你的代码也没有发生捕获事件,我测试了你的代码只发生了一次,并没有发生多次,还有如果你仅仅是为了右击事件建议你只使用contextmenu事件就可以,你说的多次执行我猜是你这样操作引起的,你右击执行了一次,然后单击又执行了一次,因为你有两个事件contextmenu和click所以执行了两次。还有你这是window你可以直接$(window).click(function(){});在jquery中阻止冒泡你可以使用return false;来阻止冒泡。
帮顶
谢谢~
方法里加上e.stopPropagation(),比较老的IE好像是e.cancelBubble()
那是子元素这样弄的,
@happydaily: 就是子元素啊-.-
@鳳梨酥: 再看看我的代码。