我使用这个jQuery选择在我的JSP多次:优化jQuery选择器的最佳方式,为什么?
$("#customers tbody tr td input[type='checkbox'][name='selectedCustomers']")
我的一些博客找到了解决办法是,我首先应该做的:
var customer=$('#customers')
然后用上述客户对象进一步电话。
customer.find("tbody tr td input[type='checkbox'][name='selectedCustomers']")
我的问题是,这个解决方案会有什么不同吗?为什么?
我的理解
当我做
$("#customers tbody tr td input[type='checkbox'][name='selectedCustomers']")
jQuery的内部会首先得到与div id="customers"
关联的对象(通过的document.getElementById( “客户”)),然后将运行至指定 checkbox
。如果我去了建议的解决方案,然后document.getElementById("customers")
将只触发一次,其余的将是相同的。所以,我从不需要多个document.getElementById
保存自己,但其余的将是相同的。我的理解是否正确?如果是的,只是我的知识的缘故,是一个document.getElementById
更昂贵的操作?
编辑: -
我不是只用上面说的选择多次,而且其他可能的选择DIV ID =“客户”下。因此,如果我首先缓存客户对象,并且如果我不这样做,那么问题又是什么在性能方面有所不同?
如果匹配的元素不会改变,你应该缓存整个选择器不仅是#客户,所有的问题都是不支持的选择器,但这是浏览器的依赖 – Alexander
我不认为这是存在的除了第二种方式以外,没有任何区别更适合阅读。 – SaidbakR
@sємsєм缓存甚至父母肯定会提高性能。更多的搜索包含在那个对象中,而不是完整的DOM – charlietfl