javascript - jQuery - mouseenter/mouseleave 定时器不起作用

标签 javascript jquery timer mouseenter

我想做的只是当有人将鼠标悬停在某个元素上 1 秒时才运行我的代码。

这是我正在使用的代码:

var timer;

$(".homeLinkWrap").mouseenter(function() {
  timer = setTimeout(function(){
   $(this).find('.homeLinkNfo').removeClass('flipOutY').addClass('flipInY').css({opacity: '1'});
    console.log('in');
  }, 1000);
}).mouseleave(function() {
    $(this).find('.homeLinkNfo').removeClass('flipInY').addClass('flipOutY');
    console.log('out');
    clearTimeout(timer);
});

第一部分(mouseenter)不起作用,并且不会删除该类然后添加新的类。第二个(mouseleave)运行正常,并且确实删除了该类并添加了新的类。

我猜测这是因为我的目标 $(this) 是当前悬停的元素,并且由于它位于计时器函数中,jQuery 不知道 $(this) 引用的是哪个元素。

我可以采取什么措施来解决这个问题?

最佳答案

我认为这是因为您在 setTimeout 函数内调用 $(this) 。你需要做这样的事情:

$(".homeLinkWrap").mouseenter(function() {
    var $self = $(this);
    timer = setTimeout(function(){
       $self.find('.homeLinkNfo').removeClass('flipOutY').addClass('flipInY').css({opacity: '1'});
       console.log('in');
    }, 1000);
});

关于javascript - jQuery - mouseenter/mouseleave 定时器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40096046/

相关文章:

c# - 如何使用 Timer.tick 事件处理程序发送 2 个整数参数

javascript - 为一周脚本的每一天更改 div 样式

javascript - 从输入文本中获取数字,然后在单击按钮时递增 ReactJS

javascript - select2 - 基于选择顺序的颜色标签

javascript - 输入类型时间 24 小时格式

javascript - 在 Angular 中防止从子元素到父元素的 ng-click 传播

javascript - 如何一次又一次地动态替换文本

javascript - jQuery:我们如何实现 if...else 逻辑和调用函数

Android - 当应用程序处于锁定或 sleep 状态时,计时器不定期运行

C++,计时器,毫秒