Кажется, через некоторое время jQuery .hover () «исчезает» - PullRequest
0 голосов
/ 06 июня 2011
$('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 ]

3 голосов
/ 06 июня 2011

Попробуйте:

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

Ваш старый код будет некорректно работать с несколькими img.questSign s на странице.

1 голос
/ 06 июня 2011

Вы можете использовать тайм-аут, например:

$('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
});
...