2

查看此事件(在 2 个相互重叠的 div 上绑定,查看 jsfiddle)

.on('contextmenu', function() { ... });
  1. 为什么两个div都被触发?
  2. 如何检测到这一点和/或阻止底层 div 触发?

演示jsfiddle

感谢您提供任何信息!

4

3 回答 3

4

在嵌套元素上,您需要停止事件冒泡:

$('#div2').on('contextmenu', function(e) {
    e.stopPropagation();
    $('#log').append('<p>div2 triggered contextmenu!</p>');
});

演示

于 2013-09-17T14:06:21.140 回答
1

演示

$('#div1,#div2').on('contextmenu', function (e) {
    e.stopPropagation();
    $('#log').append('<p>' + e.target.id + ' triggered contextmenu!</p>');
});

事件.目标

event.stopPropagation/

于 2013-09-17T14:09:11.780 回答
1

您需要防止事件传播,请尝试以下代码:

$('#div1').on('contextmenu', function(e) {
if(!e.isDefaultPrevented()){
    $('#log').append('<p>div1 triggered contextmenu!</p>');
    e.preventDefault();
}
});

$('#div2').on('contextmenu', function(e) {
if(!e.isDefaultPrevented()){
    $('#log').append('<p>div2 triggered contextmenu!</p>');
    e.preventDefault();
}
});
于 2013-09-17T14:10:40.610 回答