javascript - 注册事件时的事件处理程序查询?

标签 javascript jquery event-handling

我知道某些查询比其他查询需要更长的时间(例如,复合查询比简单查询慢,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/

相关文章:

javascript - jquery循环遍历数组并反向

javascript - youtube 视频作为网站背景

c# - C++ 到 C# 事件处理

另一个源文件中的 node.js 事件监听器

javascript - 如果 jQuery 选择不返回任何元素,则发生全局事件?

javascript - 来自不会 javascript 的人的 jQuery 问题

javascript - 如何在 Chart.js v2.0 中的标签上添加 OnClick 事件?

asp.net-mvc - ASP.NET MVC 中的依赖下拉菜单?

javascript - 如何使用 jquery 动态更改 wordpress 网站中 div 的背景?

javascript - 对 Django 的 Ajax 请求返回 404 not found