@victorib_us

Как правильно настроить hover()?

Вообщем есть сетка из блоков, наведя курсор на какой либо из них выполняется определенный эффект, проблема в том что если провести мышкой например от 1-го блока до 5-го, то поскольку курсор прошел через все 5 блоков, эффект выполнится у всех, а нужно чтобы только у 5-го. Другими словами как можно сделать чтобы hover не срабатывал в случаи когда мышку на блок не наводят, а просто проводят через него ?
То есть нужно определить задержался ли курсор на блоке дольше например одной секунд и только тогда выполнять hover эффект.
  • Вопрос задан
  • 231 просмотр
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
по событию mouseover создаем timeout и сохраняем указатель на него в переменную
по событию mouseout удаляем таймаут

пример в виде плагина:
!function($) {
    $.fn.hoverWithTimeout = function(timeout, callback) {
        $(this).each(function() {
            var $this = $(this);
            var timer;
            $this.on('mouseover', function(e) {
                timer = setTimeout(function() {
                        callback.call($this, e);
                }, timeout);
            });
            $this.on('mouseout', function() {
                clearTimeout(timer);
            });
        });
    };
}(jQuery);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы