2011-06-05 24 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

相关问题