javascript - jQuery - 覆盖事件?

标签 javascript jquery events

我的页面包含一些可拖动的 div 元素( jQuery UI 可拖动)。

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

现在这是我的问题:

是否可以禁用每个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(); 。 所以输出是:

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/

相关文章:

javascript - 如何在 JqueryUI 对话框关闭时执行回调

javascript - 有没有办法放大 D3 力布局图?

c# - 从运行时创建的对象订阅事件

c# - 如何使用 MouseMove 事件绘制单线

javascript - 分配新值时分布器出现问题

javascript - 无法使用 Angular ui-sortable

javascript - subclass.prototype = new superclass()与subclass = new superclass()

javascript - 单击鼠标调整图像大小

javascript - AJAX 发布请求 URL 添加了奇怪的字符

c# - 有和没有 "new"的接线事件之间的区别