Google Chrome和其他WebKit浏览器中的点击事件处理程序速度较慢

时间:2011-06-23 04:19:52

标签: javascript jquery google-chrome webkit click

使用jQuery UI创建一个替代选择,显示为具有三千多个元素的层次结构。

基本上,使用jQuery 1.6.1,jQuery UI中的CSS除了

<style type="text/css">
    .selectable,
    .selectable li
    {
        moz-user-select: none;
        -khtml-user-select: none;
        -webkit-user-select: none;
        user-select: none;
    }
</style>
<script type="text/javascript">
    $(function () {
       $('.seletable li').click(function () { alert('hullo') });
    });
</script>
身体

<ol class="seletable">
  <li style="margin-left: {calculated according to the current level in hierarchy}">...</li>
  ...
</ol>

有序列表当然会有3k +列表元素。

当加载页面并点击和元素时,警告框似乎在Google Chrome和其他WebKit浏览器(如Safari)中显着延迟一两秒钟,但在其他浏览器(如IE,Firefox和Opera)中的功能与预期相同。

1 个答案:

答案 0 :(得分:1)

您是否将.click()事件发送给同一<ol>个超过3000个元素?

我希望情况并非如此,因为您只需向<ol>发出一次点击事件并停止,每次都会查找是谁生成了该事件。如果你这样做,那可能也是导致经济放缓的原因。特别是在IE中,许多事件监听器都被杀死了。

这样的东西
$( '<ol>' ).click( function(e) {

    // Here, e.target gives you the real element who was clicked

});