美元(文档).On (event, '#id .class')比$(document)快.(事件,& #

is $(document).on(event, '#id .class') faster than $(document).on(event, '.class')

本文关键字:document 事件 class On 美元 文档 #id event      更新时间:2023-09-26

所以我知道如果你按ID查询元素,它比只按类快得多。在将事件绑定到动态创建的元素的情况下是这样吗?例子:

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

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

假设我的页面上有很多元素。当我单击上面函数绑定的元素上的时,第一个方法调用someFunction的速度会比第二个方法快吗?

如果您了解委托事件处理如何在jQuery中工作,那么您的'#id .class'第一个版本只是为事件处理系统做了更多的工作。正如其他人所说,您必须运行一些测试来查看差异是否可以测量,更不用说结果了。

为了帮助你理解,下面是委托事件处理的工作方式:

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

document对象上注册click事件的事件处理程序。然后,每当一个点击事件冒泡到document对象时,就会调用jQuery系统,它必须检查事件目标是否与'#id .class'选择器匹配。这需要一点功夫。首先,它必须查看对象本身(或父对象)是否与.class匹配,然后它必须从找到匹配的父链中搜索,以查看是否找到#id

您的第二个版本不必在父链中搜索#id。所以,如果这不是精确定位你想要的商品所必需的,那么你应该使用第二个选项:

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

仅仅是因为它使代码要做的工作更少。