我目前正在开发一个拥有成千上万行jQuery代码的网站,特别是有很多点击事件,我想知道是否有一个更具有性能意识的最佳实践,用于绑定点击事件或对项目的任何事件。
当然,在各种链接和项目上有30多个点击事件无法在注册时获得良好的性能。新的jQuery 1.7" on"函数正在被使用,或许应该将事件绑定到body元素或其他东西,然后检查将获取项目被点击然后从那里工作?或者它是一个非问题,绑定很多事件并不是现代浏览器或性能的问题?
答案 0 :(得分:5)
您应该将元素绑定到包含所有单击元素的最低dom元素。
因此,如果有一个名为foo
的div包含每个元素,那么你会说:
$("#foo").on("click", "yourselector", function(){
});
如果您的元素分布在您网页的每一寸,那么您就会听到最顶层的信息:
$(document).on("click", "yourselector", function(){
});
如果我正确理解你的问题,我真的希望以前的开发人员不会做这样的事情:
$("#someButtonId").on("click", function(){
//this defeats the whole purpose of on!!!
});
答案 1 :(得分:1)
您可以在元素上多次绑定同一事件,但如果您在同一个链接上有多达30个点击事件,则应该采用不同的方式。在单个事件处理程序中放置您想要执行的所有不同操作的代码,而不是自己绑定每个小事。