2011-01-21 3 views
3

Я использовал плагин jQuery и hoverIntent много раз, для выпадающих меню и расширенной навигации, которые должны быть немного более элегантными. Но я столкнулся с проблемой.Отмена hoverIntent timer

У меня есть меню с интерактивным элементом li, который также имеет зависание. Если кто-то нажимает на нее до начала таймера таймера намерения, я хочу отменить hoverintent, просто потому, что он выглядит лучше.

Я не могу понять, как, сначала, дизайнер, второй кодер. Это то, что вызывает намерение:

$('#navigationContainer ul li').hoverIntent(configDown); 

Он получил переменную configDown, которая определяет чувствительность и т.д. И две функции, называемые slideUp и slideDown. Все работает отлично.

Если кто-то нажимает на этот же элемент, я хочу отменить hoverIntent. Любая помощь будет оценена по достоинству.

ответ

2

Вместо отмены hoverIntent, изменить код в обратных вызовов hoverIntent сначала проверить, если li нажата:

var configDown = { 
    slideUp: function() { 
     if ($(this).hasClass('no-intent')) return; 
     // slide up 
    }, 
    slideDown: function() { 
     if ($(this).hasClass('no-intent')) return; 
     // slide down 
    } 
}; 

$('#navigationContainer ul li').click(function() { 
    $(this).addClass('no-intent'); 
}).hoverIntent(configDown); 

Если вы не имеете хорошую задержку на hoverIntent, хотя, это может быть сложно триггером это правильно (вы можете щелкнуть сразу после запуска hoverIntent), но основная идея заключается в том, чтобы вы настраивали.

+1

Спасибо! Кажется, это хорошо работает. Нужно быстро щелкнуть, но я добавляю его только для того, чтобы избежать визуального эффекта до того, как новая страница загрузится для «быстрых» пользователей. – plebksig

Смежные вопросы