隐藏Jquery通知栏

时间:2013-02-07 13:43:04

标签: 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();
})

但这不是这样的。关于可能出错的任何建议?

2 个答案:

答案 0 :(得分:3)

如果在添加事件处理程序时div尚不存在,则jQuery set $("#mymsg")为空,并且不会添加事件处理程序。

您可以改为使用on

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

或者,如果您愿意,可以在添加div时绑定事件:

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

答案 1 :(得分:1)

当页面加载时,消息元素在DOM中尚不存在,因此click事件处理程序未绑定到元素。

由于这似乎是一次性消息,请考虑直接在创建函数中链接事件处理程序。例如:

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