javascript - JQuery on() : how can I define filter selectors when passing events as an object?

标签 javascript jquery events event-delegation

我想知道.. JQuery 的第二个 on() 语法像对象一样传递事件:

services.on({
  'mouseenter': function(e){
    console.log('enter', e.target);
  },

  'mouseleave': function(e){
    console.log('leave', e.target);
  },

  'click': function(e){
    console.log('click', e.target);
  }
});

很好。作为第二个参数,我可以传递一个过滤器选择器:就好了。

问题:如果我想为不同的事件类型使用不同的过滤器怎么办?一个常见的用例是让 mouseenter 由主元素的子元素触发,而 mouseleave 由主元素本身触发。

目前,我知道的唯一方法就是一个一个地定义事件,使用第一种语法,如下所示:

services.on('mouseenter','li',function(e){
  console.log('enter', e.target);
});

services.on('mouseleave',function(e){
  console.log('leave', e.target);
});

有什么特殊的语法可以避免这种情况吗?表格文档不清楚。

最佳答案

好吧,您可以链接调用。这样可以减少打字。

services.on('mouseenter', 'li', function(event) {
    console.log('enter', event.target);
}).on('mouseleave', 'a', function(event) {
    console.log('leave', event.target);
}).on('click', 'li > a' function(event) {
    console.log('click', event.target);
});

没有办法为事件传递对象并为每个事件设置自定义选择器——除非您为此编写自己的代码。

关于javascript - JQuery on() : how can I define filter selectors when passing events as an object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31985468/

相关文章:

javascript - 如何从另一个js文件调用一个js文件中的函数

javascript - Angular/JADE - 当我尝试在 ng-href 属性中使用 Angular 标签时,为什么会收到错误 "Unexpected token {"?

ios - 如何检测键盘高度何时更新?

javascript - jquery修改页面上的链接

javascript - 如何使用asp.net访问highcharts中内置按钮的功能

iphone - 如何确定 UILabel 是否被触摸?

c# - 是什么阻止了互连的 Winforms 控件之间的无限循环?

javascript - 浏览器中无休止的页面更新(javascript)

javascript - Meteor 服务器在请求缓慢时自行重启

javascript - 将 UTC 时间添加到我的倒计时器