2017-04-26 67 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

哇。你是对的先生 –