jquery - 使用 jQuery 实现悬停延迟

标签 jquery jquery-hover

我试图在下拉菜单的悬停效果期间实现时间延迟。我试图使用 setTimeout 和下拉菜单在悬停时正常​​工作,但我没有得到延迟。它只是瞬间发生。下面是我的代码:

$(document).ready(function(){
    $("li.dropdown-hover").hover(hoverIn, hoverOut);
});

function hoverIn(){
    setTimeout(func1(this), 3000);
}

function hoverOut(){
    setTimeout(func2(this), 1000);
}

function func1(element) {
    $(element).find(".dropdown-menu-hover").css("display", "block");
}

function func2(element) {
    $(element).find(".dropdown-menu-hover").css("display", "none");
}

我对 jQuery 还很陌生,出于某种原因,我不想使用任何外部插件,例如 http://cherne.net/brian/resources/jquery.hoverIntent.html在许多类似的问题中都建议了这一点。有人能告诉我这里出了什么问题吗?

最佳答案

当您编写 setTimeout(func1(this), 3000); 时,您将立即调用 func1 函数。与此相同:

func1(this);
setTimeout(undefined, 3000);

相反,您希望传递 setTimeout 一个新函数,该函数将在分配的时间后运行。

var self = this;
setTimeout(function() {
  func1(self);
}, 3000);

或者您可以将 this 作为额外参数传递,如 Richard B 所示。

关于jquery - 使用 jQuery 实现悬停延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35951532/

相关文章:

jquery - 非法调用 (jQuery)

javascript - Jquery 悬停和退出

jQuery.hover 不工作

javascript - jquery - 如何从列表中获取第 n 个子数值

javascript - JQuery - 单击并将鼠标悬停在同一函数上

javascript - 当您将鼠标悬停在另一个 div 中的按钮上时,如何更改 div 背景?

jQuery - 悬停时的粗略淡入过渡

javascript - Jquery:向下拉菜单添加切换操作

jquery 选择器 - 排除第一个和第二个

javascript - 循环: images land on the last field only