Javascript Jquery在鼠标悬停时添加类并延迟删除它
我正在写一个小脚本,鼠标悬停时添加类,鼠标离开时删除类。必须延迟移除 下面的脚本只是addClass,不在removeClass上工作。我没有错误Javascript Jquery在鼠标悬停时添加类并延迟删除它,javascript,jquery,Javascript,Jquery,我正在写一个小脚本,鼠标悬停时添加类,鼠标离开时删除类。必须延迟移除 下面的脚本只是addClass,不在removeClass上工作。我没有错误 $(".result").hover( function () { $(this).addClass("current"); }, function () { setTimeout( function () { $(this).removeClass("current"); }, 800) }
$(".result").hover(
function () {
$(this).addClass("current");
},
function () {
setTimeout( function () {
$(this).removeClass("current");
}, 800)
}
);
相同的脚本,但没有设置超时,工作
$(".result").hover(
function () {
$(this).addClass("current");
},
function () {
$(this).removeClass("current");
}
);
有人能帮我吗
谢谢 在setTimeout中,
此
的上下文不同。在这种情况下,您可以使用箭头函数()
,如示例二所示,或者使用.bind
将范围绑定到当前上下文
$(“.result”)。悬停(
函数(){
$(此).addClass(“当前”);
},
函数(){
setTimeout(函数(){
$(此).removeClass(“当前”);
}.绑定(此),800)
});
//带箭头功能
$(“.result2”)。悬停(
函数(){
$(此).addClass(“当前2”);
},
函数(){
设置超时(()=>{
$(此).removeClass(“当前2”);
}, 800)
});代码>
.current{
颜色:红色;
}
.2{
颜色:绿色;
}
我是结果
我就是结果2
我假设这是一个问题,与这个
在回调中还原全局对象有关(尽管我很惊讶,因为我在jQuery中没有遇到这个问题,并且认为必须硬绑定这个
,才能防止这个问题)。如果是这样,您可以使用一个箭头函数来修复它:setTimeout(()=>$(this).removeClass(“current”),800)
或者,如果可以的话;t使用箭头函数,您可以尝试执行类似var\u this=this;setTimeout(function(){$(\u this)…
@RobinZigmond箭头函数工作正常!谢谢!@BenLonsdale我试过了,但似乎不起作用…无论如何谢谢!@Brisk小心使用箭头函数,但并非所有浏览器都支持。您也可以使用.bind(this)
任何不到4-5年的浏览器都支持它-实际上,这意味着任何人实际使用的一切,除了IE(我不知道为什么人们仍然使用IE,但显然很多人使用IE。)@TKoL哦,谢谢你的提示!用.bind!更改了脚本@RobinZigmond为什么人们仍然使用IE?这是一个巨大的疑问!