jQuery's .bind() vs. .on()

2022-08-30 01:03:12

我发现两篇关于新功能的很棒的文章:jquery4u.comelijahmanor.com.on()

有没有办法让静止图像比使用更好?.bind().on()

例如,我有一个示例代码,如下所示:

$("#container").click( function( e ) {} )

您可以注意到,我只由选择器检索了一个项目,在我的情况下,当我的页面加载时,命名项目已经存在;不是动态添加的。值得一提的是,我使用的是最新版本的jQuery:1.7.2。<div>#container

对于该示例,即使我不使用函数提供的其他功能,是否也应该使用该示例?.on().bind().on()


答案 1

在内部,直接映射到当前版本的jQuery。(同样适用于 。)因此,如果您改用,则会出现很小但实际上微不足道的性能损失。.bind.on.live.bind

但是,可能随时从将来的版本中删除。没有理由继续使用,而是有充分的理由更喜欢。.bind.bind.on


答案 2

这些代码段都执行完全相同的功能:

element.on('click', function () { ... });
element.bind('click', function () { ... });
element.click(function () { ... });

但是,它们与这些非常不同,它们都执行相同的操作:

element.on('click', 'selector', function () { ... });
element.delegate('click', 'selector', function () { ... });
$('selector').live('click', function () { ... });

第二组事件处理程序使用事件委派,并将用于动态添加的元素。使用委派的事件处理程序的性能也大大提高。第一组不适用于动态添加的元素,并且性能要差得多。

jQuery的函数没有引入任何尚不存在的新功能,它只是尝试在jQuery中标准化事件处理(您不再需要在live,bind或re delegate之间做出决定)。on()