3

我正在使用 jGrowl 来显示消息和警报,我正在使用的 datepicker 会连续三次触发 .change() 函数,这意味着每次选择日期/时间时都会显示三条消息,我想将其限制为一个。

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

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

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

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

任何帮助将不胜感激,谢谢

4

1 回答 1

3

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

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

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

另一种可能的方法是记录是否像这样针对该输入打开咆哮。

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

这种方式在输入中存储一个值,以确定在尝试排队另一个之前是否当前为它打开咆哮。

于 2012-06-22T11:16:10.777 回答