2014-04-16 16 views
94

Moja potrzeba to wywołanie alertu po kliknięciu przycisku Dodaj do listy życzeń i powinien zniknąć z alertu w ciągu 2 sekund. Tak właśnie próbowałem, ale alarm natychmiast znika, gdy tylko się pojawi. Nie jestem pewien, gdzie jest błąd. Czy ktoś może mi pomóc?Alert automatyczny Auto Close

JS Script

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

HTML kod:

<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> 

Alert Box:

<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> 
+1

możliwe duplikat http://stackoverflow.com/questions/16604407/jquery-remove-bootstrap-alert -po-pewnej-ilości czasu i http://stackoverflow.com/questions/7643308/how-to-automatically-close-alerts-using-twitter-bootstrap – 4dgaurav

+0

Próbowałem tych przepływów .. ale nie wiem jak wprowadzić w życie. :/ –

Odpowiedz

188

Na gładkiej slideUp:

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

Fiddle

+1

Nie działa po raz drugi po kliknięciu przycisku. Z powodu alertu ("zamknij") Jeśli używasz funkcji slideUp(), to działa @icanHasKittenz –

+0

Działa pięknie, ale co to za linia $ ("# success-alert"). Alert(); stosowanie? Usunąłem go i działa również. –

+1

@ RobertoSepúlvedaBravo to funkcja, która daje ci ścisłą funkcjonalność, ale masz rację, nie jest to konieczne, ponieważ używamy atrybutu 'data-dimiss =" alert ". Zaktualizuje skrypt. –

41

Korzystanie z fadeTo() że zanika do nieprzejrzystości 500 w 2 sekundy w „I Can Has Kittenz” kod "s nie jest czytelny dla mnie. Myślę, że to lepiej przy użyciu innych opcji, takich jak opóźnienie()

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

I okazało się, że lepszym rozwiązaniem

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

Dlaczego wszystkie inne odpowiedzi używać slideUp jest tuż za mną. Ponieważ używam klas fade i in, aby alert znikał po zamknięciu (lub po przekroczeniu limitu czasu), nie chcę, aby się "wysunął" i był z nim w konflikcie.

Poza metodą slideUp nawet nie działała. Sam alert nie pokazał się wcale. Oto, co doskonale pracował dla mnie:

$(document).ready(function() { 
    // show the alert 
    setTimeout(function() { 
     $(".alert").alert('close'); 
    }, 2000); 
}); 
4

jedno rozwiązanie tego automatycznie zamknie lub zanikać komunikat alertu bootstrap po 5 sekundach:

Jest to kod HTML służy do wyświetlania wiadomości:

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

JS Fragment

<script type="text/javascript"> 
 

 
$(document).ready(function() { 
 
    
 
window.setTimeout(function() { 
 
    $(".alert").fadeTo(1000, 0).slideUp(1000, function(){ 
 
     $(this).remove(); 
 
    }); 
 
}, 5000); 
 
    
 
}); 
 
</script>

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

Jeżeli parametry fadeTo są fadeTo (prędkość, przezroczystość)