4

我正在尝试使用事件映射创建一个 .on() 方法。我想把它改成这样$("ul").on("click", "li", function() {...});

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

我应该将选择器“li”放在事件映射中的什么位置?

4

3 回答 3

10

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

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

从文档

.on( 事件映射 [, 选择器] [, 数据] )

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

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

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

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

于 2012-02-17T15:09:47.427 回答
3

事件地图之后:

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

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

根据文档

.on( 事件映射 [, 选择器] [, 数据] )

于 2012-02-17T15:09:28.887 回答
2

事件地图之后:

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

文档中:

.on( 事件映射[, 选择器] [, 数据] )

于 2012-02-17T15:09:49.403 回答