如何在Rails中自动关闭引导程序警报?

时间:2014-07-19 21:09:37

标签: javascript jquery ruby-on-rails twitter-bootstrap ruby-on-rails-4

所以我有一个使用bootstrap的应用程序,当你登录,注销等时它会发出警报。

我无法自动关闭此弹出窗口,在5秒钟内,用于设置警报框样式的课程是" .alert"和" .alert-info"。

我尝试将以下代码添加到application.js:

window.setTimeout(function() {
    $(".alert alert-info").fadeTo(500, 0).slideUp(500, function(){
        $(this).remove(); 
    });
}, 5000);

除了在application.html.erb

中的脚本标记中添加它
 <script>
  window.setTimeout(function() {
    $(".alert alert-info").fadeTo(500, 0).slideUp(500, function(){
        $(this).remove(); 
    });
}, 5000);
    </script>

但它似乎还没有自动关闭,我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

setTimeout()方法只会在调用后运行一次。因此,您的javascript将在加载到DOM时执行,而不是在弹出框出现时执行。您应该将代码添加到显示弹出窗口的同一函数中,以便在显示弹出窗口后5秒运行它。此外,如果要选择使用alert和alert-info类设置样式的元素,则jQuery选择器应为$(".alert.alert-info")。您应该只将js放在一个地方,不要在多个文件中重复相同的代码。这是不必要的,会导致意外的行为。您的最终代码应如下所示:

setTimeout(function(){
    $(".alert.alert-info").fadeTo(500,0,function(){
        $(this).remove()
        })
    },5000)
}    

请记住将其放在代码中,以便在显示框时运行,而不是在加载页面时运行。如果您想要自定义动画,请查看animate()方法:http://api.jquery.com/animate/