【发布时间】:2016-10-17 21:34:34
【问题描述】:
我想要做的只是当有人在一个元素上悬停 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) 指的是哪个元素。
我能做些什么来解决这个问题?
【问题讨论】:
标签: javascript jquery timer mouseenter