在.on()方法事件映射中使用选择器的语法?

时间:2012-02-17 15:07:55

标签: jquery jquery-on

我正在尝试使用events-map创建一个.on()方法。我想将此更改为$("ul").on("click", "li", function() {...});,如下所示:

$("ul").on({
    click: function() {...},
    mouseenter: function() {...},
    mouseleave: function() {...}
});

我在哪里将选择器“li”放在events-map中?

3 个答案:

答案 0 :(得分:10)

你只是像往常一样把它作为第二个参数:

$("ul").on (
  {
    click: function() { ... },
    mouseenter: function() { ... },
    mouseleave: function() { ... }
  },
  'li'
);

From the docs

  

.on(events-map [,selector] [,data])

     

events-map 一个映射,其中字符串键表示一个或多个以空格分隔的事件   类型和可选命名空间,值表示要调用的处理函数   对于这些事件。

     

selector 一个选择器字符串,用于过滤所选元素的后代   调用处理程序。如果选择器为null或省略,则始终在调用处理程序时调用   它到达了选定的元素。

     

数据事件发生时要在event.data中传递给处理程序的数据。

[]中包含的参数是可选的。因此,如果您不传递选择器,则事件将绑定到jQuery对象中的元素,在本例中为页面上的所有ul - 元素。但是,如果提供了选择器,那么jQuery对象中的元素将处理由选择器匹配的元素集的事件委托。即,当一个事件发生在与作为jQuery对象中元素后代的选择器匹配的元素上时,该事件处理程序将在事件向上传递到父对象时被调用。请注意,这意味着如果事件传播在到达父级之前被取消,则不会调用事件处理程序。

答案 1 :(得分:3)

在events-map之后:

$("ul").on ({
    click: function() { ... },
    mouseenter: function() { ... },
    mouseleave: function() { ... }
}, "li");

示例: http://jsfiddle.net/pPPW4/

根据docs

  

.on(events-map [,selector] [,data])

答案 2 :(得分:2)

事件图之后:

$("ul").on ({
    click: function() { ... },
    mouseenter: function() { ... },
    mouseleave: function() { ... }
}, 'li');

来自documentation

  

.on(events-map [,选择器] [,数据])