我正在使用twitter的bootstrap CSS框架(太棒了)。对于某些给用户的消息,我正在使用警报Javascript JS和CSS来显示它们。
对于那些感兴趣的人,可以在这里找到:http : //getbootstrap.com/javascript/#alerts
我的问题是这个;在向用户显示警报后,我希望它在一段时间后消失。根据twitter的文档和我浏览过的代码来看,它似乎不存在:
- 我的第一个问题是要求确认是否确实没有引入Bootstrap中
- 其次,如何实现这种行为?
我正在使用twitter的bootstrap CSS框架(太棒了)。对于某些给用户的消息,我正在使用警报Javascript JS和CSS来显示它们。
对于那些感兴趣的人,可以在这里找到:http : //getbootstrap.com/javascript/#alerts
我的问题是这个;在向用户显示警报后,我希望它在一段时间后消失。根据twitter的文档和我浏览过的代码来看,它似乎不存在:
Answers:
呼叫window.setTimeout(function, delay)
将允许您完成此操作。这是一个示例,它将在警报显示2秒(或2000毫秒)后自动关闭。
$(".alert-message").alert();
window.setTimeout(function() { $(".alert-message").alert('close'); }, 2000);
如果要将其包装在一个漂亮的函数中,可以执行此操作。
function createAutoClosingAlert(selector, delay) {
var alert = $(selector).alert();
window.setTimeout(function() { alert.alert('close') }, delay);
}
然后您可以像这样使用它...
createAutoClosingAlert(".alert-message", 2000);
我敢肯定,有更优雅的方法可以做到这一点。
$('#myAlert').alert('close')
不按广告宣传。
$('#my_fancy_alert').createAutoClosingAlert(2000)
。你只需要通过$(this).remove()
或$(this).alert('close')
在setTimeout
回调。
我也无法使其与alert。('close')一起使用。
但是我正在使用它,它可以治疗!警报将在5秒钟后消失,一旦消失,其下方的内容将向上滑动至自然位置。
window.setTimeout(function() {
$(".alert-message").fadeTo(500, 0).slideUp(500, function(){
$(this).remove();
});
}, 5000);
.alert-message
?遇到问题,我BS3警报类alert alert-danger alert-block
,所以我应该使用.alert
,alert-danger
或在超时功能类的全名?
$(".alert-message,.alert-danger,.alert-info")
等等。您必须确定是否要在整个网站中使用它。例如,如果需要在每个页面中使用它,则可以在Laravel的刀片中使用@include('scripts-alerts')或@yield('alerts')之类的东西。您必须找出或在stackoverflow中问一个特定的问题,而不是在这里...
尝试处理弹出警报并使其褪色时,我遇到了同样的问题。我到处搜寻,发现这是我的解决方案。添加和删除“ in”类可解决我的问题。
window.setTimeout(function() { // hide alert message
$("#alert_message").removeClass('in');
}, 5000);
当使用.remove()和类似的.alert('close')解决方案时,我似乎遇到了从文档中删除警报的问题,因此,如果我想再次使用相同的警报div,则无法。此解决方案意味着警报可重复使用,而无需刷新页面。(我正在使用aJax提交表单并向用户提供反馈)
$('#Some_Button_Or_Event_Here').click(function () { // Show alert message
$('#alert_message').addClass('in');
});
在警报上使用“关闭”操作对我不起作用,因为它从DOM中删除了警报,并且我需要多次警报(我使用ajax发布数据,并且每条消息都向用户显示一条消息) 。因此,我创建了此函数,该函数在每次需要时都会创建警报,然后启动计时器以关闭创建的警报。我将要向其添加警报的容器的ID,警报的类型(“成功”,“危险”等)和消息传递给该函数。这是我的代码:
function showAlert(containerId, alertType, message) {
$("#" + containerId).append('<div class="alert alert-' + alertType + '" id="alert' + containerId + '">' + message + '</div>');
$("#alert" + containerId).alert();
window.setTimeout(function () { $("#alert" + containerId).alert('close'); }, 2000);
}
在另一个线程中浏览了一些答案之后,这就是我最终得到的结果:
我创建了一个名为的函数showAlert()
,该函数会动态添加一个警报,并带有可选的type
和closeDealy
。这样您就可以添加一个警报类型danger
(即,Bootstrap的警报危险),该警报将在5秒钟后自动关闭,如下所示:
showAlert("Warning message", "danger", 5000);
为此,请添加以下Javascript函数:
function showAlert(message, type, closeDelay) {
if ($("#alerts-container").length == 0) {
// alerts-container does not exist, add it
$("body")
.append( $('<div id="alerts-container" style="position: fixed;
width: 50%; left: 25%; top: 10%;">') );
}
// default to alert-info; other options include success, warning, danger
type = type || "info";
// create the alert div
var alert = $('<div class="alert alert-' + type + ' fade in">')
.append(
$('<button type="button" class="close" data-dismiss="alert">')
.append("×")
)
.append(message);
// add the alert div to top of alerts-container, use append() to add to bottom
$("#alerts-container").prepend(alert);
// if closeDelay was passed - set a timeout to close the alert
if (closeDelay)
window.setTimeout(function() { alert.alert("close") }, closeDelay);
}
随着延迟和淡入淡出:
setTimeout(function(){
$(".alert").each(function(index){
$(this).delay(200*index).fadeTo(1500,0).slideUp(500,function(){
$(this).remove();
});
});
},2000);