2012-06-13 69 views
3

我使用jGrowl來顯示消息和警報,我使用的日期選擇器在短時間內觸發.change()函數三次,這意味着每次有三條消息顯示選一個日期/時間,我想限制一個。jGrowl - 限制爲一條消息

我試過$.jGrowl.defaults.pool = 1;,但不幸的是,這只是導致消息堆疊,而不是實際上只顯示一條消息。

下面是我使用的代碼,目前它仍顯示3個消息,儘管地方的檢查:

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

(顯示一條消息,在第一時間,將創建.jGrowl通知DIV ,那麼當消息超時,它是隱藏的)

任何幫助將不勝感激,謝謝

+0

你可以把演示放在jsfiddle.net上嗎?另外,您使用的是日期選擇器? – will

+1

查看jGrowl代碼,傳入啓動的元素具有data()屬性,其中包含一些東西,通知數組在其中:'$(e).data('jGrowl.instance')。notifications'。值得看看使用這個來確定通知是否已經排隊? – Tallmaris

回答

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); 
     } 
     }); 
    } 
}); 

這種方式在輸入中存儲一個值,以確定在它試圖排隊另一個之前當前是否打開一個咆哮。

+0

@Nick關於這個awnser的任何反饋? – AbstractChaos

+0

嗨,真的很抱歉遲到的迴應 - 這看起來很完美!非常感謝您花時間做到這一點,我使用mono主題(http://www.webstuffshare.com/2010/01/jgrowl-theme-mono-basic/),所以沒有機會實施因爲它可能需要一些混亂,我在工作上很忙,但你的總體想法/解決方案是現貨,所以再次,謝謝你! :) – Nick