首页 > 解决方案 > setTimeout() 返回未捕获的类型错误

问题描述

我正在设置以下.hover()功能。

$(".portfolio_overlay").hover(function(){
 setTimeout(function(){
  $(this).fadeTo(750, 0.72, "swing", function(){});
 });
});

控制台输出以下错误:

Uncaught TypeError: Cannot read property 'display' of undefined
at ae (jquery-3.3.1.min.js:2)
at jquery-3.3.1.min.js:2
at Function.grep (jquery-3.3.1.min.js:2)
at j (jquery-3.3.1.min.js:2)
at w.fn.init.filter (jquery-3.3.1.min.js:2)
at w.fn.init.fadeTo (jquery-3.3.1.min.js:2)
at work.js:51

我希望在效果发生之前实施 a before thesetTimeout()fadeTo()一些。ms:hover

我在这里想念什么?在此先感谢您的时间。

标签: javascriptjquerysettimeout

解决方案


试试这个:

$(".portfolio_overlay").hover(function(){
  var that = $(this);
  setTimeout(function(){
    that.fadeTo(750, 0.2, "swing", function(){});
  });
});

见此。以前你试图this在不同的闭包中访问,所以它不是this你期望得到的。


推荐阅读