javascript - setTimeout() 返回未捕获的类型错误

标签 javascript jquery 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

我希望实现 setTimeout()之前fadeTo()给几个ms之前:hover效果发生了。

我在这里缺少什么? 预先感谢您的宝贵时间。

最佳答案

试试这个:

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

查看此pen 。之前您尝试在不同的闭包中访问 this,因此它不是您期望获得的 this

关于javascript - setTimeout() 返回未捕获的类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53875829/

相关文章:

javascript - 为什么这个 setTimeout() 调用在控制台中有效,而不是作为 greasemonkey 脚本?

javascript - R/Shiny 中的纯 Dygraphs JavaScript 选项

除非光标重新进入元素,否则不会检测到带有 live() 的 JQuery 鼠标悬停

jquery - 如何删除幻灯片中的暂停?

javascript - 视频元素防止右键单击代码不适用于动态元素。

javascript - setInterval 和 setTimeout 速度变化

jquery - 在 jQuery 中重叠多个 setTimeouts

javascript - 为什么我不能渲染这个 angularJS 代码?

Javascript 以不同大小调整图像大小,其中只有宽度很重要

php - 将 PHP 添加到外部 JAVASCRIPT 文件