Отображать предварительный просмотр изображения только тогда, когда мышь зависла после 1 секунды задержки

0

Я показываю предварительный просмотр изображения при наведении на изображение. Теперь я сохраняю интервал перед отображением изображения предварительного просмотра. скажем, я установил задержку как 1 сек, и в этом случае, если я вытащил мышь из изображения, она все еще отображает предварительный просмотр, так как она запускается во время ввода мыши. Как это исправить?

Мне нужно отображать предварительный просмотр только при наведении после 1сек задержки, а не если мышь не с изображением?

  • 0
    использовать таймер ( setTimeout() ) для задержки отображения
  • 0
    см. jsfiddle.net/arunpjohny/xfCwU/4
Теги:
mouseover

3 ответа

1
Лучший ответ

Основным скелетом, использующим setTimeout(), может быть

var timer;
$('img').hover(function () {
    timer = setTimeout(function () {
        //do your stuff here
        $('div').show();

        timer = undefined;
    }, 1000);
}, function () {
    if (timer) {
        clearTimeout(timer);
        timer = undefined;
    } else {
        //hide the preview
        $('div').hide();
    }
})

Демо: скрипка

  • 0
    Оно работает. Спасибо
2

В jQuery 1. 9+ вы можете использовать delay/finish:

ДЕМО jsFiddle

$("#preview").hover(function(){
    $("img").delay(1000).show(0); // passing 0 to show() will put animation in queue
}, function(){
    $("img").finish().hide(); // finish() will clear any previous delay(), despite what argues the DOC
});
  • 0
    Извините, я использую jQuery <1.9. Я обязательно проверю это и передам комментарий. Спасибо :)
0

Назначьте setTimeout переменной в событии mouseover следующим образом:

var timer = setTimeout(function() { doSomething(); }, 1000);

И затем очистите его на событии mouseout, чтобы он не показывался, когда вы наводили его:

clearTimeout(timer);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню