jGrowl - 限制为单个消息

时间:2012-06-13 17:21:00

标签: jquery jgrowl

我正在使用jGrowl显示消息和警报,我正在使用的日期选择器在短时间内连续三次触发.change()函数意味着每次选择日期/时间时都会显示三条消息,I我想把它限制在一个。

我已经尝试了$.jGrowl.defaults.pool = 1;但不幸的是,这只会导致邮件堆叠,而不是实际只显示一条消息。

这是我正在使用的代码,目前它仍显示3条消息,尽管检查到位:

if($('.jGrowl-notification').length == 0) {
    jGrowl('message');
} else {
    if ( $('.jGrowl-notification').not(':visible') ) {
        jGrowl('message');
    }
}

(第一次显示消息时,会创建.jGrowl-notification div,然后当消息超时时隐藏它)

非常感谢任何帮助,谢谢

1 个答案:

答案 0 :(得分:3)

可以尝试类似(未经测试的)

jGrowl('message',{beforeOpen: function() {
    if($('.jGrowl-notification').is(':visible')) {
       return false;
   }
 }
});

jGrowl查看beforeOpen和beforeClose的return语句,返回false会停止继续。

另一种可能的方法是记录咆哮是否对这种输入是开放的。

$('#yourPicker').change(function() {
   if($(this).data('hasExisting') == 0) {
    jGrowl('message',{
        open: function() {
                $('#yourPicker').data('hasExisting',1);
        },
        close: function() {
                $('#yourPicker').data('hasExisting',0);
        }
        });
   }
});

这种方法在输入中存储一个值,以确定当前是否为其设置了一个咆哮,然后再尝试对另一个进行排队。