2011-04-13 42 views
2

我想知道是否有人可以为我提供我的代码的优化版本,因为我意识到它倾向于在Windows下ie6中运行得非常慢。我觉得我读的地方,使用.bind()在我的代码click事件会有所帮助,但我不知道如何去了解它...如何优化我的jQuery以获得最佳性能?

下面是相关的javascript:

 var buttonToGlow = $(".buttonGlow"); 
    buttonToGlow.effect("pulsate", {}, 850); 

    $(".buttonGlow").hover(function(){ 
     $(this).filter(':not(:animated)').effect("pulsate", {times:1}, 350); 
    }); 

    $(".buttonGlow").each(function(){ 
     var currentTitle = $(this).attr("title"); 
     $(this).click(function() { 
      TINY.box.show({html:''+ currentTitle +''}); 
     }); 
    }); 

这里是我放在一起的link to the test page

感谢您的帮助!

+0

究竟是什么慢?动画? – Olegas 2011-04-13 12:06:11

+2

在IE6下的最佳优化:安装IE9 ... – Martijn 2011-04-13 12:08:49

+0

无论如何,与现代浏览器相比,IE6的速度非常慢。看过你的代码后,你无法用它做任何事情。 – JohnP 2011-04-13 12:10:13

回答

3

对我来说这看起来不错。

我想如果你想在IE6中看起来很快,你可以改变jQuery效果为动画GIF,或者你可以完全禁用该效果。国际海事组织对旧版浏览器的视觉效果略有下降没有任何问题。

我愿意打赌,大多数IE6用户由于浏览器版本而开始在网络上出现广泛的问题。就个人而言,我在开发新网站时不再考虑IE6,但这可能不适合您。 :(

+0

我完全同意IE6 :)但是,代码*可以*进一步优化。 – x10 2011-04-13 12:16:46

+0

我确实同意你的看法,但不幸的是,在这一点上我不是一种选择,因为好的15%的用户仍然使用那个该死的IE6 ...... – Krimo 2011-04-13 12:26:17

2

让我们最小化jQuery调用,首先:)
此外,你正在为每个发光按钮做不同的“点击”处理程序。你只能让一个为所有这些 - 这样的:

var buttonToGlow = $(".buttonGlow"); 
buttonToGlow.effect("pulsate", {}, 850); 

buttonToGlow.hover(function(){ 
    $(this).filter(':not(:animated)').effect("pulsate", {times:1}, 350); 
}); 

buttonToGlow.click(function() { 
    TINY.box.show({html:''+ $(this).attr('title') +''}); 
}); 

而且,:不是(:动画)调用是在IE6缓慢。让我们把它改变成更简单的东西吧?

这里有一个更简洁的版本:

var pulse = function(){ 
    $(this).stop().effect("pulsate", {times:1}, 350); 
}; 
var display_title = function() { 
    TINY.box.show({html: $(this).attr('title')}); 
}; 
$(".buttonGlow").effect("pulsate", {}, 850).hover(pulse).click(display_title); 
1

IE6下的表现可能有事情做,其处理能力的动画。但是,您可以对代码进行一些更改。相反,事件侦听器连接到每个.buttonGlow,可以从父元素委托它:

$('.canvas').delegate('.buttonGlow', 'click', function() { 
    TINY.box.show({ html: $(this).attr('title') }); 
}); 

这可能会导致边际性能的提高,并且会更容易,如果你需要动态插入节点。

+0

嗯,该死的。我每天都会学到新东西:) – x10 2011-04-13 12:18:19

+0

我喜欢.delegate()的优雅,谢谢! – Krimo 2011-04-13 12:32:28

相关问题