我知道某些查询比其他查询需要更长的时间(例如,复合查询比简单查询慢,id 比类快等)。就我而言,这具有实际意义。想知道它如何应用于事件处理程序中的查询。
查询对事件处理程序的触发速度有影响吗?或者查询是否已解析为指向 DOM 中该对象的某种指针?
例如,这些处理程序是否绝对等效? :
$("body > section > #id div.class element").click(func);
$("#element").click(func);
最佳答案
在您给出的情况下,选择器的速度只会影响页面的初始设置 - 查找要放置事件处理程序的元素的速度。附加事件处理程序后,选择器不应影响实际事件处理程序触发的速度。
选择器速度对事件处理程序可能很重要的情况是您使用 on()
函数为可能尚不存在的元素定义事件处理程序——“委托(delegate)”事件。例如:
$( "#dataTable tbody" ).on( "click", "tr", func);
对比
$( "#dataTable tbody" ).on( "click", ".my-table-row", func);
第一个事件处理程序的性能会更好(尽管绝对值得指出的是差异通常很小)。这种情况与您的示例不同的原因是实际的点击处理程序被放置在 tbody
上。 ,然后在触发时使用选择器来确定给定事件是否匹配。
关于javascript - 注册事件时的事件处理程序查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24017966/