简单的jQuery在firefox,IE上超级慢,在Chrome上超级快

时间:2011-05-01 13:46:29

标签: jquery

全新的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的问题,但有点因为我总是用它来宣誓而给我一些问题。我只是必须接受这个并做出结论吗?

由于

编辑:好的,我已经设法加快了速度。虽然仍然没有闪亮的Chrome闪光性能,IE8和Firefox现在被称为可接受的。我从这个优秀的页面获得了一些提示 - http://www.artzstudio.com/2009/04/jquery-performance-rules/

我只是通过在我的标记 - #list中给出'#leftnav ul'它自己的ID,然后在我的jQuery代码中引用它来简单地使我的选择器变量更具体。所以,

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

变为:

var leftnavUl = $("#list li");

从我收集的内容中,这可以让jQuery更有效地磨练相关元素。

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

就像我说的那样,并不像Chrome那样qucik,而是变得更好!

1 个答案:

答案 0 :(得分:0)

如果它没有抛出错误或故障,那么你可能做的并不多。

代码看起来不像它有任何大规模的循环或任何会导致它滞后的东西,只是简单的浏览器handel jQuery。

你为什么不用:

$(“#leftnav ul li ul”)。hover(... ect ...)

这样你就可以删除'儿童'电话和变种。 除非你将它们用于别的东西,否则就是这样。