Javascript setTimeout函数在第一次鼠标指针/悬停时未触发

Javascript setTimeout函数在第一次鼠标指针/悬停时未触发,javascript,jquery,html,mouseevent,jquery-hover,Javascript,Jquery,Html,Mouseevent,Jquery Hover,概述: 我正在创建一个菜单,当您将鼠标悬停在类为“showhim”的列表项上时,它会显示一个div“showme”。我希望在列表项之间切换时有一个延迟,因此我包含了一个setTimeout函数 问题:setTimeout函数未在第一个mouseenter事件中触发。如果删除setTimeout函数,mouseenter事件可以正常工作。 滑鼠 已尝试: 我试过mouseover和mouseout,想看看这是否会有所不同。如果我将鼠标放在span(菜单项名称)上,则会触发setTimeout函数

概述: 我正在创建一个菜单,当您将鼠标悬停在类为“showhim”的列表项上时,它会显示一个div“showme”。我希望在列表项之间切换时有一个延迟,因此我包含了一个setTimeout函数

问题:setTimeout函数未在第一个mouseenter事件中触发。如果删除setTimeout函数,mouseenter事件可以正常工作。 滑鼠

已尝试: 我试过mouseover和mouseout,想看看这是否会有所不同。如果我将鼠标放在span(菜单项名称)上,则会触发setTimeout函数

此外,当我在最上面的父div上放置一个边框,并在输入“showhim”之前将鼠标悬停在边框上时,setTimeout函数被触发,菜单工作正常。我不知道为什么边境会起作用

//为代码段伪造这些
var isHomepage=false;
函数isMobile(){
返回false;
}
//假货的终结
$('.showhim').mouseenter(函数(){
如果(!isMobile()){
var$this=$(this);
计时器=设置超时(函数(){
$('.mastermenuitem').removeClass('menu-active');
$('.mainmenuitem').removeClass('nav-active');
$('.showme').css('display','none');
//展开商店菜单容器
if(isHomepage&!isMobile()){
var corecenter_width=$('#corecenter')。innerWidth();
$(“#商店菜单容器”).css('width',corecenter_width-(border_width*2));
}
//将活动类添加到单击的菜单项
$this.find('li').addClass('menu-active');
$this.find('.showme').css('display','block');
$this.find('.mainmenuitem').addClass('nav-active');
}, 150);
}
}).mouseleave(函数(){
清除超时(计时器);
});

菜单项1
内容1
菜单项2
内容2
已解决: 我有两个setTimeout函数引用同一个计时器变量

我所做的只是创建了另一个计时器,悬停正常工作

var timer; // setTimeout for Menu Close 
var timer2; // setTimeout for Showhim 

// TIMER 2
$('.showhim').mouseenter(function() {

  // Do something

    }, showhim_timeout);
}).mouseleave(function() {
    clearTimeout(timer2);
});


// TIMER 1
function timeoutMenu() {
    timer = setTimeout(function() {
        close();
    }, menu_timeout);

}

function stopTimeout() {
    clearTimeout(timer);
}

旁注:HTML是无效的
li
只能是
template
ul
ol
的直接子项。在您的问题中,我已将您引用的代码转换为堆栈片段,使所需的更改绝对最少(定义
isHomepage
isMobile
并将要显示的内容放在
.showme
中)。在代码段中工作,问题在于其他地方(可能在该变量和函数中?)。这是创建true的优点。感谢您的输入。我解决了问题,并用解决方案更新了原始帖子。问题出在计时器变量上。答案不在问题中。回答您自己的问题是可以的,但您必须通过发布答案来实现。有关更多信息,请参阅和。但这是非常不正确的我很想在将来帮助其他人,我只想使用它下面的“删除”链接。