简单jQuery在firefox上运行速度非常慢,即在Chrome上运行速度非常快

简单jQuery在firefox上运行速度非常慢,即在Chrome上运行速度非常快,jquery,Jquery,jQuery是全新的。在我正在开发的页面中实现了下面的功能,我认为相对简单的jQuery被证明是有问题的 $(document).ready(function(){ var leftnav = $("#leftnav ul li"); leftnav.hover(function(){ $(this).children('ul').stop(true, true).slideDown(); },function(){

jQuery是全新的。在我正在开发的页面中实现了下面的功能,我认为相对简单的jQuery被证明是有问题的

$(document).ready(function(){

    var leftnav = $("#leftnav ul li");

    leftnav.hover(function(){
        $(this).children('ul').stop(true, true).slideDown();

    },function(){
                $(this).children('ul').stop(true, true).slideUp();
    });

});
基本上,它在Chrome和Opera中运行得非常出色——可爱、流畅、快速。在Firefox和IE8中,它运行起来就像一条狗——急促、缓慢,就像穿着一身泥。正如我所说,我对jQuery是全新的—这是我第一次尝试在网页中实现任何功能。我用mouseenter和mouseleave也试过同样的方法,但差别不大

我本以为IE8会有问题,但对于firefox给我带来的问题,我有点失望,因为我一直在发誓。我是否必须接受这一点并作出承诺

谢谢

编辑:好的,我已经设法把事情加快了一点。虽然还没有提高lightning Chrome的性能,但IE8和firefox现在已经可以接受了。我从这个精彩的页面上得到了一些提示-

我只是通过在标记列表中提供'#leftnav ul'它自己的ID,然后在jQuery代码中引用它,使选择器var更加具体。所以

var leftnav = $("#leftnav ul li");
变成:

var leftnavUl = $("#list li");
从我收集的信息来看,这使得jQuery能够更有效地磨练相关元素

使用firebug中的console.time,我注意到每次滑下操作的速度从~15ms增加到~10ms,只是在我的选择器中更加具体


就像我说的,还不如Chrome那么酷,但是越来越好了

如果不是抛出错误或故障,那么您可能无能为力

代码看起来不像有任何大循环或任何会导致其延迟的东西,也许这只是浏览器处理jQuery的方式

你为什么不使用:

$(“#leftnav ul li ul”)。悬停(…等…)

这样,您就可以省去“children”调用和var。
除非您将它们用于其他用途。

谢谢您的建议-不幸的是,我已经尝试了直接引用元素的各种组合,使用或不使用var,使用或不使用children调用,但没有任何区别。想知道这是否与我的DOM结构有关。。。有没有jQuery专家对这方面有什么建议?你能发布一个链接到现场演示吗?