我的页面包含一些可拖动的 div
元素(不 jQuery UI 可拖动)。
现在我们要添加一项新功能:用户应该能够一次选择多个 div
并拖动这些 div
元素,而不会触发之前的绑定(bind)事件。
现在这是我的问题:
是否可以禁用每个div
的mousedown
、mousemove
和mouseup
事件,只要它们是选择的一部分吗?
所以基本上我想用新事件替换旧事件,然后然后恢复原始事件。
感谢您的宝贵时间
更新:
我编写了一个小脚本来测试stopImmediatePropagation
使用以下代码:
$("p").click(function(event){
alert ( ' I am the old event ' );
});
$("a").click( function()
{
$("p").click(function(event){
event.stopImmediatePropagation();
alert ( ' I am the new event ' );
});
return false;
});
它不起作用,因为在第一个事件之后调用 event.stopImmediatePropagation();
。
所以输出是:
I am the old event
I am the new event
最佳答案
您可以查看event.stopImmediatePropagation()
。
请参阅 jQuery docs
基本上,您可以选择让一个函数阻止其他函数运行 - 您不需要删除并重新绑定(bind)这些函数。
这是来自 JSBin 的代码,我已对其进行了修改以使其正常工作。这有点 hacky 并且可能不是很有效,但它确实有效!
$("p").click(function(event){
alert ( ' I am the old event ' );
});
$("a").click( function() {
$("p").each(function() {
var $t = $(this);
var events = $t.data("events");
$t.unbind('click');
$t.click(function(event){
event.stopImmediatePropagation();
alert ( ' I am the new event ' );
});
for (var i = 0, l = events.length; i < l; ++i) {
$t.click(events[i]);
}
});
return false;
});
关于javascript - jQuery - 覆盖事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1715609/