Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery在鼠标悬停时添加类并延迟删除它_Javascript_Jquery - Fatal编程技术网

Javascript Jquery在鼠标悬停时添加类并延迟删除它

Javascript Jquery在鼠标悬停时添加类并延迟删除它,javascript,jquery,Javascript,Jquery,我正在写一个小脚本,鼠标悬停时添加类,鼠标离开时删除类。必须延迟移除 下面的脚本只是addClass,不在removeClass上工作。我没有错误 $(".result").hover( function () { $(this).addClass("current"); }, function () { setTimeout( function () { $(this).removeClass("current"); }, 800) }

我正在写一个小脚本,鼠标悬停时添加类,鼠标离开时删除类。必须延迟移除

下面的脚本只是addClass,不在removeClass上工作。我没有错误

$(".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?这是一个巨大的疑问!