Javascript 为多个对象设置超时
我有以下多个传单的代码,当点击时,将显示一个帮助文本覆盖,4秒后消失。我可以让它显示帮助文本,但超时不起作用Javascript 为多个对象设置超时,javascript,jquery,Javascript,Jquery,我有以下多个传单的代码,当点击时,将显示一个帮助文本覆盖,4秒后消失。我可以让它显示帮助文本,但超时不起作用 $(".flyercontainer").click(function(){ $(this).children('.flyerHelp').css('opacity',0.8); setTimeout(function(){ $(this).children('.flyerHelp').css('opacity',0); },4000); }) 谢谢您的帮助。您
$(".flyercontainer").click(function(){
$(this).children('.flyerHelp').css('opacity',0.8);
setTimeout(function(){
$(this).children('.flyerHelp').css('opacity',0);
},4000);
})
谢谢您的帮助。您的
setTimeOut()
回调中的此
不是您所认为的那样(它指向全局对象,窗口
)
如上所述,
此
在window.setTimeout()方法的回调函数范围内使用时,指的是窗口
对象。您可以通过在单击处理程序的范围内设置一个等于this
的变量来解决此问题。flyercontainer
,但不在调用setTimeout()
的范围内
或者,您可以将jQuery的delay()
方法链接到两个零持续时间动画之间,以获得相同的对象不透明度效果。(演示:)我投了反对票,因为你原来的帖子不是答案,你写的只是“这个
不是你认为它在你的函数中的样子”,没有解释它是什么或者如何修复它。你编辑了你的帖子,显示了一个很好的解决方案,现在我改变了投票结果。@user1:这仍然是一个答案,我给出的建议是正确的,不是吗?你以前没有给出任何建议。现在你有了我的一票。在国际海事组织,它应该得到一个否决票,现在它应该得到一个赞成票。
$(".flyercontainer").click(function(){
var children = $(this).children('.flyerHelp');
children.css('opacity',0.8);
setTimeout(function(){
children.css('opacity',0);
},4000);
});