是$(document).on(event,' #id .class')比$(document).on(event,' .class')更快

时间:2015-07-13 01:16:32

标签: javascript jquery performance

所以我知道,如果您按ID查询元素,它的速度比只有类快。 在将事件绑定到动态创建的元素的情况下是否正确。 示例:

$(document).on('click', '#id .class', someFunction);

VS

$(document).on('click', '.class', someFunction);

假设我的页面上有很多非常多的元素。 当我在上面的函数绑定的元素上点击时,第一种方法会比第二种方法更快地调用someFunction吗?

1 个答案:

答案 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);

只是因为它减少了代码的工作量。