Javascript 悬停2秒钟,fadeIn/out同级不工作

Javascript 悬停2秒钟,fadeIn/out同级不工作,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我设法在一个ID或一个类上悬停2秒钟以淡出/淡出(显然它捕获了同一个类的所有内容),但我无法在一个(this.sibling)(“className”)上实现这一点 此外,fadeIn/Out或toggleFade在没有if语句的情况下也可以正常工作。。。在制作兄弟元素fadeIn之前,我已经没有办法在上面悬停超过2秒钟了 var timeoutId; $(“.cell-inner”).hover(函数(){ 如果(!timeoutId){ timeoutId=window.setTimeou

我设法在一个ID或一个类上悬停2秒钟以淡出/淡出(显然它捕获了同一个类的所有内容),但我无法在一个(this.sibling)(“className”)上实现这一点

此外,fadeIn/Out或toggleFade在没有if语句的情况下也可以正常工作。。。在制作兄弟元素fadeIn之前,我已经没有办法在上面悬停超过2秒钟了

var timeoutId;
$(“.cell-inner”).hover(函数(){
如果(!timeoutId){
timeoutId=window.setTimeout(函数(){
timeoutId=null;//编辑:添加了此行
$(this.sides(“.tool tip”).fadeIn();
}, 2000);
}
});
函数(){
if(超时ID){
clearTimeout(timeoutId);
timeoutId=null;
}否则{
$(this).this(“.tool tip”).fadeOut();
}
});
。工具提示{
显示:无;
}
.工具提示:悬停{
光标:指针;
}

输入字段中的全文。。。梅塞纳斯·福西布斯·莫利斯·因特杜姆。埃尼安·尤利奥·夸姆。威尼斯人前庭的佩伦茨克ornare sem lacinia quam。

首先,您的代码片段被破坏,因为您在块的末尾放置了一个未分配的匿名函数。我假定这是
hover()
调用的第二个参数

逻辑的另一个问题是因为
setTimeout()
处理程序函数在与
mouseenter
处理程序函数不同的作用域下运行,因此代码中的
不引用引发事件的元素

要解决此问题,请在事件处理程序中创建一个变量,该变量保存元素引用,然后可以在超时内使用该元素引用。请注意,您还可以简化
setTimeout()
clearTimeout()
调用,如下所示:

var timeoutId;
$(“.cell-inner”).hover(函数(){
var$el=$(本);
timeoutId=setTimeout(函数(){
$el.sibbins(“.tool tip”).fadeIn();
}, 2000);
},函数(){
clearTimeout(timeoutId);
$(this).this(“.tool tip”).fadeOut();
});
。工具提示{
显示:无;
}
.工具提示:悬停{
光标:指针;
}

输入字段中的全文。。。梅塞纳斯·福西布斯·莫利斯·因特杜姆。埃尼安·尤利奥·夸姆。威尼斯人前庭的佩伦茨克ornare sem lacinia quam。

在setTimeout内,“this”不再指元素(而是指窗口对象)。选项1):在setTimeout之外,通过执行类似“var self=this”的操作,对“this”进行本地引用,然后在“setTimeout”函数中使用“self”。选项2),使用
setTimeout(()=>{…})
。即:箭头语法,从外部范围保留对“this”的引用。注意:并非所有浏览器都支持箭头函数。匿名函数是编辑之前.hover()的第二个参数。我认为@DreamTeK可能犯了一个错误。