【问题标题】:Hide the Jquery notification bar隐藏 Jquery 通知栏
【发布时间】:2013-02-07 21:50:24
【问题描述】:

我正在使用 Jquery 在我的网页顶部显示通知。我正在使用以下功能来显示通知栏 -

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

$(document).ready(function(){ 中,我使用适当的css 调用myBar("my message");。它根据需要显示栏。

现在我想在单击栏时隐藏栏。为此我正在尝试这个

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

但这不是这样工作的。有什么可能出错的建议吗?

【问题讨论】:

标签: jquery


【解决方案1】:

如果添加事件处理程序时您的 div 尚不存在,则 jQuery 集 $("#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');
}

【讨论】:

  • 我在想同样的问题,但不知道如何解决。它现在工作正常。谢谢
【解决方案2】:

页面加载时消息元素在DOM中还不存在,所以click事件处理程序没有绑定到元素。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多