2011-01-21 65 views
3

我已經多次使用jQuery和hoverIntent插件,下拉菜單和高級導航應該更加優雅。但我遇到了一個問題。取消hoverIntent計時器

我有一個可點擊li元素的菜單,也有懸停。 如果有人在意圖計時器觸發前單擊它,我想取消hoverintent,只是因爲它看起來更好。

我不明白如何,設計師第一,編碼第二。這就是調用的意圖:

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

它有一個變量configDown定義靈敏度等。而兩個函數效果基本show和了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 2011-01-21 14:13:52