JQuery on():如何在将事件作为对象传递时定义过滤器选择器?

时间:2015-08-13 10:18:24

标签: 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);
  }
});

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

问题:如果我想为不同的事件类型使用不同的过滤器怎么办?一个常见的用例是主要elem的孩子触发了mousenter,而主要的elem触发了mouseleave。

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

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

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

是否有任何特殊语法可以避免这种情况?形成文档尚不清楚。

1 个答案:

答案 0 :(得分:1)

好吧,你可以连结电话。这样就不那么打字了。

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);
});

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