jQuery .hover()似乎在一段时间后“消失”了

时间:2011-06-05 21:17:16

标签: javascript jquery javascript-events jquery-selectors

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

当页面刚刚加载时,此代码非常棒。 但过了一段时间似乎停止了工作。 悬停时图片不会改变。

此外: 我对所有主流浏览器进行了长期测试,似乎这个非常特殊的问题只出现在新的Firefox 5测试版中。使用新的Firefox更新修复了问题

2 个答案:

答案 0 :(得分: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行为异常而无法使用。

答案 1 :(得分: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
});