我已经多次使用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之后最终单击鼠标),但是您可以在那里进行基本调整。

09-25 17:14