如何从父中删除jQuery事件侦听器而不删除类似的侦听器?

kin*_*ppy 4 html javascript jquery

我想知道是否有一种优雅的方法可以从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();
Run Code Online (Sandbox Code Playgroud)

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

$('body').off('click'); //removes both event listeners
Run Code Online (Sandbox Code Playgroud)

我认为大多数方法会杀死两个听众.看到任何优雅的回答会很棒.

Jos*_*ier 9

一种选择是命名事件:

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
Run Code Online (Sandbox Code Playgroud)