我的页面包含一些可拖动的div
元素(不 jQuery UI可拖动)。
现在我们要添加一个新功能:用户应该能够一次选择多个div
并拖动这些div
元素,而不会触发先前的绑定事件。
现在这是我的问题:
是否可以禁用每个mousedown
的{{1}},mousemove
和mouseup
事件,只要它们是选择的一部分?
基本上我想用新的替换 旧事件,然后恢复原始事件。
感谢您的时间
更新
我写了一个小脚本来测试div
使用以下代码:
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;
});
时,它不起作用。
所以输出是:
我是旧事件
我是新活动
答案 0 :(得分:4)
您可以查看event.stopImmediatePropagation()
。
请参阅jQuery docs
中的内容基本上你创建一个函数可选地阻止其他函数运行 - 你不需要删除和重新绑定函数。
这是来自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;
});
答案 1 :(得分:0)
你不能只unbind()
这件事吗?
请参阅jQuery docs