<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