2012-08-09 79 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