Bootstrap Alert Auto Close

82

Мне нужно вызвать предупреждение, когда я нажимаю кнопку "Добавить в Wishlist" и должен исчезнуть оповещение через 2 секунды. Так я пытался, но предупреждение сразу же исчезает, как только оно появляется. Не уверен, где ошибка. Может ли кто-нибудь помочь мне?

JS Script

  $(document).ready (function(){
            $("#success-alert").hide();
            $("#myWish").click(function showAlert() {
                $("#success-alert").alert();
                window.setTimeout(function () { 
                            $("#success-alert").alert('close'); }, 2000);               
                  });       
                    });

Код HTML:

<div class="product-options">
    <a  id="myWish" href=""  class="btn btn-mini" >Add to Wishlist </a>
    <a  href="#" class="btn btn-mini"> Purchase </a>
</div>

Предупреждающий бокс:

<div class="alert alert-success" id="success-alert">
    <button type="button" class="close" data-dismiss="alert">x</button>
    <strong>Success! </strong>
    Product have added to your wishlist.
</div>

6 ответов

182
Лучший ответ

Для гладкого слайда:

$("#success-alert").fadeTo(2000, 500).slideUp(500, function(){
    $("#success-alert").slideUp(500);
});

Fiddle

  • 3
    Это не работает второй раз, когда вы нажали кнопку. Из-за предупреждения ('close') Если вы используете slideUp (), он работает @ICanHasKittenz
  • 0
    Работает красиво, но что это за строка $ ("# success-alert"). Alert (); использование? Я удалил его и тоже работает.
Показать ещё 5 комментариев
36

Использование fadeTo(), которое исчезает до непрозрачности 500 секунд за 2 секунды в коде "I Can Have Kittenz", не читается мне. Я думаю, что лучше использовать другие параметры, такие как delay()

$(".alert").delay(4000).slideUp(200, function() {
    $(this).alert('close');
});
13

Я нашел, что это лучшее решение

$(".alert-dismissible").fadeTo(2000, 500).slideUp(500, function(){
    $(".alert-dismissible").alert('close');
});
11

Почему все остальные ответы используют slideUp, просто выше меня. Поскольку я использую классы fade и in, чтобы оповещение исчезало при закрытии (или после таймаута), я не хочу, чтобы он "скользил" и противоречил этому.

Кроме того, метод slideUp даже не работал. Само предупреждение не показывалось вообще. Вот то, что отлично сработало для меня:

$(document).ready(function() {
    // show the alert
    setTimeout(function() {
        $(".alert").alert('close');
    }, 2000);
});
  • 1
    Коротко и сладко
4

еще одно решение для этого Автоматическое закрытие или исчезновение предупреждающего сообщения бутстрапа через 5 секунд:

Это HTML-код, используемый для отображения сообщения:

<div class="alert alert-danger">
This is an example message...
</div>

JS Snippet

<script type="text/javascript">

$(document).ready(function () {
 
window.setTimeout(function() {
    $(".alert").fadeTo(1000, 0).slideUp(1000, function(){
        $(this).remove(); 
    });
}, 5000);
 
});
</script>
  • 0
    Это очень хороший ответ, потому что он не ограничивается отображением сообщения JS, сообщение может уже отображаться при загрузке страницы.
  • 0
    да :) потому что я написал это в $(document).ready
1
$("#success-alert").fadeTo(2000, 500).slideUp(500, function(){
    $("#success-alert").alert('close');
});

Где параметры fadeTo: fadeTo (скорость, непрозрачность)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню