0

伙计们,您能否给我一些关于使用 jQuery 监听点击事件的正确方法以及每种方法的优缺点的见解:

.click(function() { ... });

或者

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

我想确保我的代码是一致的。

4

4 回答 4

2

来自 jQueryclick 文档

这个方法是一个捷径.on('click', handler)

所以使用.clickand.on那种简单的形式基本上没有区别。但是,通过使用,on您可以获得其他选项。例如,您可以传入其他参数,例如 aselectordata。例如:.on( events [, selector ] [, data ], handler(eventObject) )通过传入一个selector例子,你可以创建一个委托事件,这样即使在 DOM 中添加了新项目,该事件仍然会被触发。仅出于这个原因,我倾向于几乎总是使用.on. 但同样,使用.click(function() {or.on('click', function () {是功能等效的。

于 2013-02-21T21:54:12.427 回答
1

我想有人可能会说这.on('click')是微不足道的“更好”,因为它读起来更像英语而不是.click(),并且它没有另一个函数调用的额外(微小)开销。

于 2013-02-21T21:54:35.233 回答
1

所有的评论似乎都耗尽了两者的想法

.click(function() {

.on('click', function () {

是等效的(参见http://api.jquery.com/click/)。

虽然编码风格本身可能是主观的,但一致性可能更容易解决。使用.on('click', function() {版本有机会更加一致,因为您可以通过on()方法传递各种事件。它有更多用例的事实增加了它的可用性并可能增加一致性。

于 2013-02-21T22:00:07.690 回答
1

在元素本身上使用 .click() 或 .on('click') 完全相同,只是一种简写方法。

如果您需要一种一致的方式来绑定单击事件,那么我认为您应该始终使用 .on()..... 因为它也可以用于委托事件。这样,您可以使用此 .on() 进行所有事件侦听,而不必在使用 .click()、.submit()、.delegate()、.live() 等之间切换。

不仅如此,还有可读性。.('on', 'click'.....比其他委托方法更具可读性。

于 2013-02-21T22:46:14.810 回答