3

两秒钟后鼠标悬停,但设置超时功能不起作用

js

setTimeout(function () {
  $('.box').mouseover(function () {
    $(this).animate({
      marginTop: '-224px',
      height: '300px'
    })
    $(this).find('.rotate-arrow').addClass('rotate');
  });
}, 2000);
4

1 回答 1

7

解释:

您已将事件处理程序附加到 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:

于 2013-02-19T09:14:07.227 回答