2013-02-07 81 views
0

我正在使用Jquery在我的網頁頂部顯示通知。我使用下面的函數來顯示通知欄 -隱藏Jquery通知欄

function myBar(message) { 
    $("<div />", { class: 'mybar', text: message, id: 'mymsg' }).hide().prependTo("body") 
     .slideDown('slow'); 
} 

而在$(document).ready(function(){我打電話了myBar("my message");,用適當的CSS。它根據需要顯示欄。

現在我想隱藏欄時,一個點擊欄上。爲此,我正在嘗試這種方式

$("#mymsg").click(function() { 
    $(this).remove(); 
}) 

但是,這不起作用。有什麼可能是錯的建議?

+1

看到這個[jQuery的$(這)一個.remove()追加後不工作(http://stackoverflow.com/questions/9665646/jquery-this-remove-not-working-after -append) – 2013-02-07 13:49:09

回答

3

如果當您添加事件處理的格尚不存在,jQuery的設置$("#mymsg")是空的,不添加事件處理程序。

你可以使用on代替:

$(document.body).on('click', "#mymsg", function() { 
    $(this).remove(); 
}); 

或者,如果你願意,你可以當你添加的格綁定事件:

function myBar(message) { 
    $("<div />", { class: 'mybar', text: message, id: 'mymsg' }).click(function(){ 
     $(this).remove(); 
    }).hide().prependTo("body").slideDown('slow'); 
} 
+0

我在想同樣的問題,但不知道如何解決這個問題。 現在工作正常。謝謝 – PRYM

1

在頁面加載時沒有按消息元素」 t還存在於DOM中,所以click事件處理程序沒有綁定到元素。

因爲這似乎是一個一次性的消息,可以考慮直接在創建功能鏈接事件處理程序。例如:

function myBar(message) { 
    $("<div />", { 
     class: 'mybar', 
     text: message, 
     id: 'mymsg' 
    }).hide().prependTo("body").slideDown('slow').click(function() { 
     $(this).remove(); 
    }); 
} 
+0

感謝您的幫助! – PRYM