小编典典

`on` 和 `live` 或 `bind` 有什么区别?

all

在 jQuery v1.7 中添加了一个新方法on。从文档中:

‘.on() 方法将事件处理程序附加到 jQuery 对象中当前选定的元素集。 从 jQuery 1.7 开始,.on()
方法提供了附加事件处理程序所需的所有功能。

live和有什么区别bind


阅读 166

收藏
2022-08-24

共1个答案

小编典典

on()是一种尝试将 jQuery 的大多数事件绑定函数合并为一个。live这还有一个额外的好处,那就是用vs整理低效率delegate。在
jQuery 的未来版本中,这些方法将被删除并且只会onone保留。

例子:

// Using live()
$(".mySelector").live("click", fn);

// Equivalent `on` (there isn't an exact equivalent, but with good reason)
$(document).on("click", ".mySelector", fn);



// Using bind()
$(".mySelector").bind("click", fn);

// Equivalent `on`
$(".mySelector").on("click", fn);



// Using delegate()
$(document.body).delegate(".mySelector", "click", fn);

// Equivalent `on`
$(document.body).on("click", ".mySelector", fn);

在内部,jQuery 将 所有 这些方法
速记事件处理程序设置器映射到该on()方法,进一步表明您应该从现在开始忽略这些方法并只使用on

bind: function( types, data, fn ) {
    return this.on( types, null, data, fn );
},
live: function( types, data, fn ) {
    jQuery( this.context ).on( types, this.selector, data, fn );
    return this;
},
delegate: function( selector, types, data, fn ) {
    return this.on( types, selector, data, fn );
},

请参阅https://github.com/jquery/jquery/blob/1.7/src/event.js#L965

2022-08-24