两秒钟后鼠标悬停,但设置超时功能不起作用
js
setTimeout(function () {
$('.box').mouseover(function () {
$(this).animate({
marginTop: '-224px',
height: '300px'
})
$(this).find('.rotate-arrow').addClass('rotate');
});
}, 2000);
解释:
您已将事件处理程序附加到 setTimeout 内部,这实际上意味着这将等待 2 秒,然后再将函数附加到mouseover
元素.box
的 a。
不幸的是$(this)
, setTimeout 函数超出了范围,因此没有读取您的值。幸运的是,您可以简单地分配给嵌套函数范围内$(this)
的变量,您将能够像往常一样访问 jquery 对象。
解决方案:
$('.box').mouseover(function () {
var $this = $(this)
setTimeout(function () {
$this.animate({ marginTop: '-224px', height: '300px' })
$this.find('.rotate-arrow').addClass('rotate');
}, 2000);
});
jsFiddle: