正因爲如此,這是行不通的。幾件事情。
首先:將點擊事件添加到您的代碼中,而不是添加到您添加的標記中。這可以真正簡化你的代碼。
其次:由於之前的延遲和淡入淡出,您的動畫嘗試(fadeOut)將失敗。要正確地工作,只需將您擁有的那個出列。
function show_notification_on_top(message, type) {
content = "<a class='notify-close' href='#'>close</a>" + "<p>" + message + "</p>";
$("#notification-box").fadeIn('slow').delay(60000).fadeOut('slow');
$("#notification-box").html(content);
}
$(document).on('click', '.notify-close', function() {
$('#notification-box').dequeue();
});
注意,.on('click',
增加了一個現場事件處理程序,讓您從標記刪除事件。
我寫的代碼的功能是:在關閉時顯示消息,如果手動關閉,可以等待60000毫秒,然後按照定義淡出。
這裏是一個工作示例:http://jsfiddle.net/MarkSchultheiss/X6qDJ/
編輯:注意OP。如果你是固定上必須包括你有現在的情況下,您可以更改您的代碼:代替
content = "<a class='notify-close' onclick='$(\"#notification-box\").dequeue();' href='#'>close</a>" + "<p>" + message + "</p>";
:
content = "<a class='notify-close' onclick='$(\"#notification-box\").fadeOut(\"slow\");' href='#'>close</a>" + "<p>"+message+"</p>";
我不知道你對「type」的用法是什麼,但請參閱我的回答,瞭解你在示例代碼中包含的內容。即使在文檔檢查之後,關於'dequeue()'也不是很明顯。 –