Javascript Jquery-Firefox具有较慢的.live()悬停速度,Chrome&;你跑得很快

Javascript Jquery-Firefox具有较慢的.live()悬停速度,Chrome&;你跑得很快,javascript,html,css,jquery,Javascript,Html,Css,Jquery,好的,我正在开发一个新网站。它是一个社交网络类型的网站,有很多jquery的交互性 当我尝试使用JQuery.live()实现鼠标悬停效果时,出现了问题。它在Chrome和Safari中运行得非常快,在IE中运行得非常快,在Firefox中运行得很慢。非常奇怪,几乎总是FF比IE(8/9)快得多 有关页面: 如果你将鼠标悬停在chrome和Firefox的“最新图片”上,你会注意到速度上的巨大差异 $('.hoverme').live('mouseover mouseout', functio

好的,我正在开发一个新网站。它是一个社交网络类型的网站,有很多jquery的交互性

当我尝试使用JQuery.live()实现鼠标悬停效果时,出现了问题。它在Chrome和Safari中运行得非常快,在IE中运行得非常快,在Firefox中运行得很慢。非常奇怪,几乎总是FF比IE(8/9)快得多

有关页面:

如果你将鼠标悬停在chrome和Firefox的“最新图片”上,你会注意到速度上的巨大差异

$('.hoverme').live('mouseover mouseout', function(event) {
  if (event.type == 'mouseover') {
    $(this).addClass('hoverclass');
  } else {
    $(this).removeClass('hoverclass');
  }
});
任何帮助都将不胜感激。另外,.live是优化的最佳选择吗


谢谢

我不太清楚为什么firefox会慢一些,但你可以尝试添加一个上下文元素。您可以执行以下操作,而不是将所有事件绑定到根元素:

$('div.clickme', $('#recent_photos')[0]).live('mouseover mouseout', function() {
  ...
});
这样做可以最大限度地减少遍历量和绑定到同一节点的事件量


要找出哪个函数调用慢,可以使用firebug分析代码。要获得有用的结果,您必须使用jQuery的未压缩版本。

IE速度快吗?奇怪的我知道FF的javascript引擎比Chrome的慢,我使用了很多jQuery,也注意到了差异,但回到我的第一点。。我是。。。快速?您经常使用.live(),我感觉jQuery库中FF的突变事件检查失败,它正在检查所有.live选择器,每个鼠标都在/out.PS上。在很多情况下,您可能会考虑使用CSS:将光标悬停在样式表中,并删除许多javascript执行/依赖项。是的,我有一些安静的。live正在收听@贝格瑞森:你能更具体地解释一下吗。我更喜欢PHP而不是Javascript。另外,我认为您在CSS中使用:hover是正确的。我将尝试通过执行tat来消除一些jquery侦听器。我为css:hover删除了很多.live('mouseover mouseout'),这只是改变了元素的样式。我这样做也是因为我阅读了很多关于委托和live以及性能影响的内容。那是小费!