<input type="text" id="sShState" />
$('#sShState').liveSearch(); // A plug-in
// inside plug-in:
$this = $(this);
// On focus I add a dropdown box and add li's;
var obj = '<ul id="ddList"></ul>';
$this.after(obj);
$this.next('ul').html(li's);
$('#ddList').live('mouseenter', function(){
var $li = $this.next('ul').children('li');
$li.removeClass('hoverLi');
$li.hover(function(e){
$li.filter('[last]').removeAttr('last');
$(this).addClass('hoverLi');
},function() {
$li.filter('.hoverLi').attr('last', true);
$li.filter('.hoverLi').removeClass('hoverLi');
});
$li.click(function(){
selectLi($(this));
removeList();
});
});
在Chrome中它非常非常快!为什么Firefox中的代码变慢?
但是在Firefox中,当鼠标第一次进入ulbox时,它需要1-2秒直到它开始执行代码。
即使在Internet Explorer 7中也能正常工作。悬停的li仍然有点落后,但是当鼠标进入ul盒子时立即开始执行。
但为什么它在Chrome甚至IE7中速度如此之快,FF如此之慢? – silversky 2010-02-06 20:22:23
好问题。我不知道。也许绑定事件元素在FF中简单得慢。铬有一个邪恶的快速JavaScript引擎,所以这有帮助。最终,你想正确地形成你的代码。重复绑定多余的事件是不行的。修复它并查看它在FF中的工作原理。 – user113716 2010-02-06 20:27:06
li是动态创建的,所以我不能遍历dom并使用live()。我不认为我可以使用$('#ddList li')。live()。我记得在文档中它说我们应该在选择obj()后立即使用它,它不支持DOM遍历。我理解对吗? – silversky 2010-02-06 20:38:50