javascript - 如何在不删除类似监听器的情况下从父级删除 jQuery 事件监听器?

标签 javascript jquery html

我想知道是否有一种优雅的方法可以在不影响类似事件的情况下从 HTML 元素中删除特定的事件监听器。

例。

var a = {
  addEvent: function(){
     $('body').on('click', function(){
      //does something here.
     });
  }
}

var b = {
  addEvent: function(){
     $('body').on('click', function(){
      //does something else here.
     });
   }
}

a.addEvent();
b.addEvent();

所以问题是:如何在不删除对象 a 的点击事件的情况下删除 b 的事件?

$('body').off('click'); //removes both event listeners

我假设大多数方法都会杀死两个听众。很高兴看到任何优雅的回应。

最佳答案

一个选择是 namespace the events :

var a = {
  addEvent: function(){
     $('body').on('click.a', function(){
       //does something here.
     });
  }
}

var b = {
  addEvent: function(){
     $('body').on('click.b', function(){
       //does something here.
     });
   }
}

a.addEvent();
b.addEvent();

$('body').off('click.a'); //removes the a event listener

关于javascript - 如何在不删除类似监听器的情况下从父级删除 jQuery 事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29355079/

相关文章:

javascript - 协助正则表达式字符串匹配 javascript,特殊情况

javascript - 如何使用 python 脚本调用 javascript 函数?

javascript - 使用 ajax 异步运行 javascript 函数

javascript - 如何通过两个嵌套的匿名函数传递变量(带有超时的事件处理程序)

javascript - iframe 父文档上的 jQuery 效果

javascript - 什么更好?更多 HTTP 请求 = 更少的数据传输或更少的 HTTP 请求 = 更多的数据传输?

php - 尝试使用 TinyMCE 上传图像时出现错误 403

html - 使用 CSS 删除额外的换行符标签

javascript - Console.log 在 if 语句中触发,但其余代码不会

html - 为什么页面显示 "scroll memory"?