我有2個功能來顯示和清除一個窗口。最初我讓他們定義內聯jQuery的懸停命令,如在$('item').hover(function() {...}, function() {...});
,這完美的作品。但是,如果我從這些函數調用中獲取代碼並將它們隔離爲像$('item').hover(function1, function2);
那樣調用它,結果會有所不同。在前一種情況下,我得到了預期的行爲。也就是說,懸停時元素會顯示,如果鼠標懸停在懸停元素上,超時後淡出。在第二個版本中,新元素顯示,在超時後淡出,並且不會再回到懸停狀態。爲什麼用產生不同行爲的函數調用替換Javascript內聯函數?
我假設它與我正在使用的超時有關,但我完全從原始複製函數,因此理論上它應該是發生的相同的東西..所以我會天真地假設。無論是我還是在某個地方犯了一個錯誤,我只是沒有抓住。
撥弄全代碼和HTML可here(工作版本)和here(斷版)。
下面是該工程的一個代碼:
$('#test').hide();
var timeout;
$('a').hover(function(){
$('#test').show();
clearTimeout(timeout);
}, function(){
timeout = setTimeout(function(){
$('#test').fadeOut('fast', function(){});
}, 1000);
});
這裏就是失敗:
$('#test').hide();
var timeout;
function clearWindow() {
timeout = setTimeout(function(){
$('#test').fadeOut('fast', function(){});
}, 1000);
}
function showWindow() {
$('#test').show();
clearTimeout(timeout);
}
$('a').hover(showWindow(), clearWindow());
再一次我覺得很愚蠢..雖然鬆了一口氣,但它很簡單,謝謝 – ssb
@ssb:不用擔心,至少它是簡單和容易修復的:-) – Cameron