2012-08-09 49 views
0

我使用下面的代码隐藏一个div(命名方式),当你点击它外面:setTimeout函数始终触发

$(document).click(function(e) { 
if (e.target.id != 'info' && !$('#info').find(e.target).length) { 
     $("#info").fadeOut(300); 
setTimeout(function() { 
     $("#info").html("Select an Item"); 
},300); 
}; //if statement 
}); //click function 

我想要实现的是淡出完成后,将文本“选择一个项目”放在div中。然而,这个SetTimeout总是被执行;该div通过另一个函数显示自己,但似乎立即触发setTimeout函数。

为什么会发生这种情况,您如何解决这个问题?

+2

那么300毫秒不很长。 – travis 2012-08-09 20:35:14

+0

问题是为什么当div得到显示通过另一个函数,这个函数也触发。 – Gooey 2012-08-09 20:36:41

+0

我们必须看到你的html告诉你。您的点击被绑定到文档,这意味着每次点击页面时代码都会触发。 – travis 2012-08-09 20:40:12

回答

2

我将避免setTimeout如果可以的话,而不是这样做:

$("#info").fadeOut(300, function() { 
    // Animation complete. 
    $("#info").html("Select an Item"); 
}); 
+0

不错!从来不知道你可以做到这一点,很好!你碰巧知道为什么即使低谷,如果不应该触发这个setTimeout执行? – Gooey 2012-08-09 20:39:29

+0

我们必须看到你的html告诉你。您的点击被绑定到文档,这意味着每次点击页面时代码都会触发。 – travis 2012-08-09 20:40:45

+0

哦,我明白了,我不明白现在的错误。感谢您的输入。 – Gooey 2012-08-09 20:42:23