JQuery API文档指出,我们应该使用较新的on()
函数,而不是将Even处理程序附加到元素的旧方法(有时已过时)。
根据我的理解,on()
需要绑定到页面中“当前存在”的元素(DOM)。在构建页面大多是动态加载(通过AJAX)和注入的Web站点的今天,这几乎迫使我们将其绑定到文档元素。
我主要使用live()
方法来绑定“未来元素”。这对我来说工作得很好,但我不能简单地用较新的on()
替换我的live()
,因为我的元素还不存在,如果存在,就什么都不能用。
我可以简单地使用$(document).on()
,但我害怕它似乎会给事件交付带来巨大的开销。至少从我从他们的文件中了解到的。
有人能对on()
函数在我的特定情况下可能带来的惩罚发表评论吗?如果有人可以评论一下jQuery不断地弃用他们的事件绑定API(在这种情况下不向后兼容)的合理性是什么?
1条答案
按热度按时间l0oc07j21#
嗯,它们基本上都是一样的
这是
bind
的来源这是
live
的来源这是
delegate
的来源它们基本上都是一样的,你可能只需看一眼就能猜到性能上的差异,
总而言之,所有3
on()
“前辈”都做了注解,但称他们为“继任者”。正如评论中提到的,Rochas已经制作了一个jsPerf,它将通过在您的浏览器中运行测试来向您显示性能差异,
live
测试中的两个失败是因为现在不兼容的jQuery版本,但正如您从源代码中看到的,它无论如何都与On相同。jsPerf Benchmark