Noty.js删除有关新通知的最早通知

时间:2014-03-12 09:03:02

标签: javascript jquery notifications jgrowl noty

我正在使用此脚本http://ned.im/noty/ 用于显示通知

    var n = noty({
        text: message,
        type: type,
        dismissQueue: true,
        force: true,
        layout : "bottomLeft",
        theme: 'newTheme',
        maxVisible : 5
    });

所以这是当前的配置,它排队了5个项目。问题是,当点击一个按钮时,我无法弄清楚如何删除显示新通知的第一个通知。 欢迎任何想法。

4 个答案:

答案 0 :(得分:3)

好的,我使用noty.js API找出它:http://ned.im/noty/#api

首先我定义了顶级通知

var notyclose_id    = $("#noty_bottomLeft_layout_container>li:first-child>.noty_bar").attr('id');

之后我收到了通知量

var noty_list_count = $("#noty_bottomLeft_layout_container li").size();

比检查此金额是否大于或等于我的通知设置

    if(noty_list_count >= 5) 
        $.noty.close(notyclose_id);

如果是,我使用api关闭它。 :)

答案 1 :(得分:1)

正在寻找这个并最终到了这里;暂时的当前版本(3.1.0)允许您使用杀手选项:

noty({
    text: 'I have just killed it',
    type: 'success',
    killer : true
})

看起来它“杀死”队列中的所有先前通知,使“这一个”显示为唯一的。

答案 2 :(得分:0)

您还可以考虑自动删除超时。这就是我对信息和成功消息所做的事情:它们会在3秒后自动消失(timeout: 3000)。我永久保留错误和警告消息(用户必须单击它才能删除,timeout: false,这是默认值。)

通过这种方式,事物堆积起来的可能性降低,并且需要较少的用户交互。减少摩擦。我不知道它是否适合你的用例。

noty({
    text: 'Sucessfully persisted xy value',
    layout: 'bottomRight',
    type: 'success',
    timeout: 3000,
    animation: {
        open: 'animated zoomInUp', // Animate.css class names
        close: 'animated zoomOutUp' // Animate.css class names
    }
});


noty({
    text: 'Error while writing value xy',
    layout: 'bottomRight',
    type: 'error',
    animation: {
        open: 'animated zoomInUp', // Animate.css class names
        close: 'animated zoomOutUp' // Animate.css class names
    }
});

答案 3 :(得分:0)

如果你使用布局作为'topRight',那么下面给出的代码是有帮助的。

var notyclose_id    = $("#noty_topRight_layout_container>li:first- child>.noty_bar").attr('id');
var noty_list_count = $("#noty_topRight_layout_container li").size();
if(noty_list_count >= 6) {
$.noty.close(notyclose_id);
}

您还需要调用$ .notyRenderer.show()来显示新消息,它已经存在,但您需要每次都调用它

if(instance.options.maxVisible > 0) {
//if($(instance.options.layout.container.selector + ' > li').length < instance.options.maxVisible) {
$.notyRenderer.show($.noty.queue.shift());
//}
//else {
//}
}