我正在使用 twitter 的引导 CSS 框架(这太棒了)。对于给用户的一些消息,我使用警报 Javascript JS 和 CSS 显示它们。
对于那些感兴趣的人,可以在这里找到:http: //getbootstrap.com/javascript/#alerts
我的问题是这个;在我向用户显示警报后,我希望它在一段时间后消失。根据 twitter 的文档和我查看的代码,它看起来不像这样:
- 我的第一个问题是要求确认这确实没有融入 Bootstrap
- 其次,我怎样才能实现这种行为?
我正在使用 twitter 的引导 CSS 框架(这太棒了)。对于给用户的一些消息,我使用警报 Javascript JS 和 CSS 显示它们。
对于那些感兴趣的人,可以在这里找到:http: //getbootstrap.com/javascript/#alerts
我的问题是这个;在我向用户显示警报后,我希望它在一段时间后消失。根据 twitter 的文档和我查看的代码,它看起来不像这样:
调用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);
我确信有更优雅的方法可以实现这一点。
我也无法让它与 alert.('close') 一起工作。
但是我正在使用它,它很有效!警报会在 5 秒后消失,一旦消失,其下方的内容会滑到其自然位置。
window.setTimeout(function() {
$(".alert-message").fadeTo(500, 0).slideUp(500, function(){
$(this).remove();
});
}, 5000);
在尝试处理弹出警报并将它们淡化时,我遇到了同样的问题。我搜索了各个地方,发现这是我的解决方案。添加和删除“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);
}
这是咖啡脚本版本:
setTimeout ->
$(".alert-dismissable").fadeTo(500, 0).slideUp(500, -> $(this.remove()))
,5000
对于上述每个解决方案,我继续失去警报的可重用性。我的解决方案如下:
页面加载时
$("#success-alert").hide();
一旦需要显示警报
$("#success-alert").show();
window.setTimeout(function () {
$("#success-alert").slideUp(500, function () {
$("#success-alert").hide();
});
}, 5000);
请注意,fadeTo 将不透明度设置为 0,因此显示为无且不透明度为 0,这就是我从解决方案中删除的原因。
在另一个线程中查看了一些答案之后,这就是我最终得到的结果:
我创建了一个名为的函数,该函数showAlert()
将动态添加警报,并带有可选的type
and 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);
}
一段时间后,我需要一个非常简单的解决方案来隐藏某些东西,并设法让它发挥作用:
在角度你可以这样做:
$timeout(self.hideError,2000);
这是我在达到超时时调用的函数
self.hideError = function(){
self.HasError = false;
self.ErrorMessage = '';
};
所以现在我的对话框/用户界面可以使用这些属性来隐藏元素。
有延迟和淡出:
setTimeout(function(){
$(".alert").each(function(index){
$(this).delay(200*index).fadeTo(1500,0).slideUp(500,function(){
$(this).remove();
});
});
},2000);
试试这个
$(function () {
setTimeout(function () {
if ($(".alert").is(":visible")){
//you may add animate.css class for fancy fadeout
$(".alert").fadeOut("fast");
}
}, 3000)
});