2011-06-05 31 views
0
$('img.questSign').hover(function() { 
    $('img.questSign').attr('src', '/media/quest-sign-small-hover.png'); 
}, 
function(){ 
    $('img.questSign').attr('src', '/media/quest-sign-small.png'); 
}); 

此代碼的工作原理非常棒,當頁面被加載新鮮時。 但過了一段時間它似乎停止工作。 圖片在懸停時不會更改。jQuery .hover()似乎在一段時間後「消失」

ADDITION: 我對所有主流瀏覽器都進行了長期測試,看來這個特殊問題只出現在新的Firefox 5測試版中。問題固定與新的Firefox更新

+1

你確定有東西不會破壞你的腳本嗎?當它停止工作時,你會得到JS錯誤嗎?代碼對我來說看起來非常好。 – Marko 2011-06-05 21:19:02

+0

我使用Firefox 5beta +標準webdev工具。 也許我必須設置一個窗口間隔來更新窗口一段時間沒有激活時的事件.... – 2011-06-05 22:53:36

回答

3

試試這個:

$('img.questSign').hover(function() { 
    $(this).attr('src', '/media/quest-sign-small-hover.png'); 
}, function() { 
    $(this).attr('src', '/media/quest-sign-small.png'); 
}); 

你的舊代碼將使用多個胡作非爲頁面上img.questSign小號。

+0

不能解決問題;) – 2011-06-05 22:51:50

+0

@ daemonfire300:你是否將它包裝在'$(document).ready'中?我當然是 – Eric 2011-06-06 07:41:35

+0

。該代碼工作正常,但它會在一段時間後停止工作。 這真是奇怪的事情。 – 2011-06-06 19:17:04

1

您可能需要使用這樣的超時:

$('img.questSign').hover(function() { 
    clearTimeout($(this).data('timeout')); 
    $(this).attr('src', '/media/quest-sign-small-hover.png'); 
}, function() { 
    var e = $(this).data('timeout', setTimeout(function() { 
     e.attr('src', '/media/quest-sign-small.png'); 
    }, 3000)); // 3 sec 
}); 
+0

是的,但是爲什麼應該超時修復事件在一段時間後消失的問題。 – 2011-06-05 22:52:21

相關問題