我已经多次使用jQuery和hoverIntent插件,用于下拉菜单和高级导航,这应该更优雅一些。但是我遇到了一个问题。
我有一个带有可点击li元素的菜单,该菜单也有一个悬停。 如果有人在意图计时器触发之前单击它,我想取消悬停的,只是因为它看起来更好。
我不知道如何,首先是设计师,然后是编码器。这就是所谓的意图:
$('#navigationContainer ul li').hoverIntent(configDown);
它有一个定义灵敏度等的变量configDown。还有两个函数,称为slideUp和slideDown。一切正常。
如果有人单击相同的元素,我想取消hoverIntent。任何帮助,将不胜感激。
最佳答案
而不是取消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之后最终单击鼠标),但是您可以在那里进行基本调整。