2017-04-26 66 views
0

請看看我的代碼:引導 - 防止警報從封閉通過JavaScript警報事件

$('#myPanel').on('closed.bs.alert', function() { 
    // insert code here 
}); 

我試過return false內,甚至在function(){}通過event作爲參數,並進行event.preventDefault(),但它仍然不會停止來自關閉的警報。我需要防止警報被關閉,以防我會提出的某些條件不能滿足。

+0

您可以重載'closed.bs.alert'函數。 closed.bs.alert = $(函數(){ \t //你的代碼在這裏.. }) – UJS

+0

或分享一些更詳細..審查 – UJS

+0

你檢查的問題,如果事件有一個'preventDefault'方法附加到它? –

回答

2

也許這會爲你工作:

$('#myPanel [data-dismiss]').on('click', function() { 
    return false; 
}); 

相反鉤住引導的情況下,我們鉤到解僱按鈕的用戶的點擊,並阻止引導的事件觸發從。

+0

是的,它確實有效!非常感謝。我仍然是一個JavaScript的新手,所以我不知道如果我的條件沒有得到滿足,我可以防止hook引導的事件。真棒! –

+0

酷!值得注意的是,如果用戶可以用任何其他方式關閉警報(例如按'Esc'鍵),那麼這將不起作用。我不熟悉boostrap,但如果只能通過單擊X按鈕關閉警報,則此解決方案應該沒問題。 –

+0

@ edmund-reed,如果我在一個AJAX函數中,該怎麼做'return false'?我試着把'return false'放在AJAX函數中,但它什麼都不做。 –

1

代碼不起作用的原因是您將事件處理程序添加到警報已關閉之後觸發的事件,而不是關閉之前觸發的事件。這是你想要的東西:

$('#myPanel').on('close.bs.alert', function (e) { 
    e.preventPropagation(); 
}); 

使用return false;也將工作,但我嘗試時,我可以,因爲不是所有的瀏覽器解釋從事件處理程序以同樣的方式返回false使用事件的方法。

+0

哇。你是對的先生 –