2009-11-11 104 views
2

我的页面包含一些可拖拽的div元素(而不是 jQuery UI可拖拽)。jQuery - 覆盖事件?

现在,我们要添加一个新功能:用户应该能够一次选择多个div并拖动这些div元素,而不会触发以前绑定的事件。

现在,这里是我的问题:

是否有可能,只要禁用的每个divmousedownmousemovemouseup事件,因为它们是一个选择的一部分?

所以基本上我想由一个新的,事后恢复原来事件已被替换旧事件

感谢您的时间


更新:

我写了一个小脚本来测试stopImmediatePropagation

jsBin demo

用下面的代码:

$("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();在第一个事件之后被调用。 所以放出来是:

我老事件

我是新事件

回答

4

你可以看看event.stopImmediatePropagation()

在这里jQuery docs

见基本上你做一个功能可选禁止投放其它功能 - 您不必删除并重新绑定功能。


下面是JSBin你的代码,我已经修改,以使其发挥作用。这有点哈克,可能不是很有效,但它的工作原理!

$("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; 
}); 
+0

您好感谢您的答复。这正是我正在寻找的。 但它不起作用。查看我更新的帖子以获取详细信 – jantimon

0

你不能只unbind()事件?

jQuery docs

+0

不起作用。演示:http://jsbin.com/eqefa来源:http://jsbin.com/eqefa/edit – jantimon

+0

答案更新。 –