美元(文档).On (event, '#id .class')比$(document)快.(事件,& #
is $(document).on(event, '#id .class') faster than $(document).on(event, '.class')
所以我知道如果你按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);
仅仅是因为它使代码要做的工作更少。
相关文章:
- document.getElementById——它如何处理onchange事件
- 如果事件发生后插入了检查代码,那么$(document).ready()会被激发吗
- 如何在不接触某些元素的情况下附加document.click事件
- 对于jqGrid:在keypress事件中调用$(document).on('click'.)无法正常工
- Javascript on click事件在函数中不起作用,但在document.ready()中起作用
- 为什么document.ready中的事件处理程序函数有效但无效;取出后不起作用
- 如何在没有任何事件的情况下从 document.ready 上的服务器端检索值
- 将 onClick 事件添加到 document.createElement(“th”)
- 多个 document.createElement 在一个函数中返回事件侦听器
- focus() 从 jQuery(document).ready 调用时不触发 focus 事件
- document.onmousedown是一个事件,然后为什么
- 奇怪的点击事件气泡在iPhone safari上,它在冒泡到document.body之前停止
- 当document.click事件在Javascript中注册时,如何在IE中正确获取事件目标
- $(document).ready和Window onload导致事件触发两次
- 等待第一个事件完成,然后继续使用document.ready代码
- 如何将自定义jQuery事件冒泡到window.document中
- 在$(document).ready()之后调用什么jQuery事件
- 在jQuery中列出Document Ready事件
- $(document).on('click')事件在未单击的情况下激发.使用e.stopPropagat
- 为什么窗户.Onload事件发生在$(document).ready之前