javascript - 将 jQuery delegate (on) 与复选框一起使用会导致响应出现巨大延迟 - 为什么?

标签 javascript jquery performance

嗨,我有一个动态创建的表,它充当使用复选框的选择列表。我希望这些复选框是互斥的。因此,在选中一个复选框后,我需要清除所有其他选中的复选框。

$(document).on("keydown", "#list_Instructors input.allocate",function(event){   
    alert("hit");
    $("#list_Instructors input.allocate").removeAttr('checked');
    $(event.target).attr('checked', 'checked');
});

这种方法可行,但点击和发生任何事情之间有很大的延迟,这是不好的。我尝试了各种组合但没有成功。

是否有简单的解释来解释为什么会造成延迟。

最佳答案

你的问题是你为整个DOM绑定(bind)了方法,这是非常糟糕。 因此,请始终尝试将其绑定(bind)到控件所在的最近的 div(最近的父元素)。

第二件事是始终缓存您的选择器以获得更好的性能。如下所示

var dataTable=$('#dataTable');

dataTable.on("click", function(event){
    alert($(this).text());
});

关于 Jquery API事件表现如下所示。

Attaching many delegated event handlers near the top of the document tree can degrade performance. Each time the event occurs, jQuery must compare all selectors of all attached events of that type to every element in the path from the event target up to the top of the document. For best performance, attach delegated events at a document location as close as possible to the target elements. Avoid excessive use of document or document.body for delegated events on large documents.

关于javascript - 将 jQuery delegate (on) 与复选框一起使用会导致响应出现巨大延迟 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14001331/

相关文章:

Javascript NiceScroll 调整大小函数

Javascript动态创建元素和onclick函数

jQuery 航点和更改导航类

python - 如何更快地实现贪心集覆盖?

java - 在数组中重用 HashMap

javascript - 根据 ease 函数以变化的速率调用函数?

javascript - 多少 Javascript 太多了?

javascript - 如何检查音频是否未加载?

jquery - 以编程方式更改文本大小会阻止更改事件

c# - 构建用于 Linux(通过 Mono)的 CPU 密集型 C# 应用程序是个坏主意吗?