我应该使用.on()还是.click()附加事件处理程序?
问题描述:
假设我只是想附上一个简单的点击处理程序的元素,我一直在做这样的:我应该使用.on()还是.click()附加事件处理程序?
$("#mydiv").click(function() { ... });
望着JQuery的文档,似乎.on()
是“建议”的方式附加事件处理程序并替换.bind()
,.delegate()
和.live()
:
在jQuery 1.7中,。对()方法提供用于附接的事件处理程序所需 所有功能。有关从旧jQuery 事件方法转换的帮助,请参阅.bind(),.delegate()和.live()。
而且在.click()
它说的文档:
这种方法是在头两个变化对.bind快捷方式( '点击',处理程序),并.trigger('点击')在第三。
因此,这意味着.click()
使用.bind()
将由.on()
被弃用,取而代之,是吧?或者暗示.click()
会坚持下去,但它会在某种程度上成为.on("click")
的快捷方式?
基本上,我的问题是这样的......当今天从事写作的jQuery代码,我应该使用:
Variant 1: $("#mydiv").click(function() { ... });
或:
Variant 2: $("#mydiv").on("click", function() { ... });
?
答
就我个人而言,我会使用on()
所有来自jQuery 1.7+的事件绑定。
这意味着动态添加的元素与页面加载时可用的元素之间不存在歧义。
而且,你的状态,click()
(和其他事件的快捷方式)通过jQuery的反正转化为on("event", function() { ... });
,所以它保存在过程中的一步 - 不,这使得课程的显着差异。
最后,on("click")
在我看来更好。
您不必担心遗留代码,他们不太可能会完全删除点击速记。 .on()处理程序只是附加事件处理程序的一种更有效的方式,从能够同时附加多个事件处理程序到向映射事件添加额外信息! – Khez