2013-02-07 33 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