所以我知道,如果您按ID查询元素,它的速度比只有类快。 在将事件绑定到动态创建的元素的情况下是否正确。 示例:
$(document).on('click', '#id .class', someFunction);
VS
$(document).on('click', '.class', someFunction);
假设我的页面上有很多非常多的元素。
当我在上面的函数绑定的元素上点击时,第一种方法会比第二种方法更快地调用someFunction
吗?
答案 0 :(得分:1)
如果您了解委派事件处理在jQuery中的工作方式,那么您的第一个'#id .class'
版本只是为事件处理系统做了更多工作。正如其他人所说的那样,你必须进行一些测试,看看差异是否可以衡量,更不重要。
为了帮助您理解,此处的委托事件处理方式如下:
$(document).on('click', '#id .class', someFunction);
click
事件的事件处理程序已在document
对象上注册。然后,只要点击事件冒泡到document
对象,就会调用jQuery系统,并且必须检查事件目标是否与'#id .class'
选择器匹配。这有点工作。首先,它必须查看对象本身(或父对象)是否与.class
匹配,然后它必须从找到匹配的父链中搜索,以查看它是否找到#id
。
您的第二个版本不必搜索#id
的父链。因此,如果不能准确定位您想要的商品,那么您应该选择第二个选项:
$(document).on('click', '.class', someFunction);
只是因为它减少了代码的工作量。