jQuery绑定多次激活?

时间:2012-01-28 18:22:08

标签: javascript jquery bind

$(".container").on("contextmenu", ".photos-bottom .albums li", function(e) {

$('html').bind('click', function (event) {
    alert(id);
});

return false;
});

当我右键单击(对于contextmenu)多次,然后左键单击html一次,它会触发警报我右键单击的次数。

因此,如果我右键单击一次,然后左键单击,它会显示一次弹出窗口。 如果我右键单击三次,然后左键单击,它会显示三次弹出窗口。

为什么会这样?

2 个答案:

答案 0 :(得分:19)

$('html').unbind('click').bind('click')修复了它。

答案 1 :(得分:4)

因为每次上下文菜单事件发生时都会绑定click事件,所以每次右键单击时实际上都会添加一个额外的绑定。这就是事件执行次数不断增加的原因。

你应该:

a)在关闭上下文菜单时取消绑定事件,或

b)将click事件绑定到contextmenu回调函数之外。