Element autohide jQuery po 5 sekundach

92

Czy możliwe jest automatyczne ukrycie elementu na stronie WWW 5 sekund po załadowaniu formularza przy użyciu jQuery?

Zasadniczo mam

<div id="successMessage">Project saved successfully!</div>

że chciałbym zniknąć po 5 sekundach. Przyjrzałem się interfejsowi użytkownika jQuery i efektowi ukrywania, ale mam mały problem z wykonaniem go tak, jak chcę.

<script type="text/javascript">
        $(function() {
            function runEffect() {

                var selectedEffect = 'blind';

                var options = {};

                $("#successMessage").hide(selectedEffect, options, 500);
            };

            $("#successMessage").click(function() {
                runEffect();
                return false;
            });
        });
    </script>

Chciałbym usunąć funkcję click i dodać metodę timeout, która wywoła runEffect () po 5 sekundach.

Chris Conway
źródło

Odpowiedzi:

117
$(function() {
    // setTimeout() function will be fired after page is loaded
    // it will wait for 5 sec. and then will fire
    // $("#successMessage").hide() function
    setTimeout(function() {
        $("#successMessage").hide('blind', {}, 500)
    }, 5000);
});

Uwaga : aby funkcja jQuery działała wewnątrz setTimeout, należy ją opakować

function() { ... }
Konstantin Tarkus
źródło
1
Wypróbowałem ten kod na mojej stronie internetowej. Ale to nie zadziałało. Poza tym skryptem js, czego jeszcze potrzebuję, aby działał? Proszę o poradę! Dziękuję Ci!
Jornes
1
@Jornes upewnij się, że ten skrypt znajduje się po <script src="jquery.js"></script>na Twojej stronie.
Konstantin Tarkus
221
$('#selector').delay(5000).fadeOut('slow');
justmeol
źródło
2
Ostrzegamy, że to rozwiązanie psuje $ ('html'). Click (function () {// click outside $ ("# selector"). FadeOut ();});
max4ever
Dzięki za to proste rozwiązanie.
Ron
Dziękuję za bardzo proste rozwiązanie!
Anahit DEV
9

Możesz spróbować :

setTimeout(function() {
  $('#successMessage').fadeOut('fast');
}, 30000); // <-- time in milliseconds

Jeśli tego użyłeś, twój div zostanie ukryty po 30 sekundach. Próbowałem też tego i zadziałało.

kochanie
źródło
3

Pamiętaj, że może być konieczne ponowne wyświetlenie tekstu div po jego zniknięciu. W pewnym momencie będziesz musiał również opróżnić, a następnie ponownie wyświetlić element.

Możesz to zrobić za pomocą 1 linii kodu:

$('#element_id').empty().show().html(message).delay(3000).fadeOut(300);

Jeśli używasz jQuery, nie potrzebujesz setTimeout, przynajmniej nie chcesz automatycznie ukrywać elementu.

Kryzys
źródło
1

Używasz setTimeout na swojej funkcji runEffect:

function runEffect() {
    setTimeout(function(){
        var selectedEffect = 'blind';
        var options = {};
        $("#successMessage").hide(selectedEffect, options, 500)
     }, 5000);
}
Christian C. Salvadó
źródło
1

Myślę, że możesz też zrobić coś takiego ...

setTimeout(function(){
    $(".message-class").trigger("click");
}, 5000);

i zrób swoje animowane efekty na wydarzeniu-kliknij ...

$(".message-class").click(function() {
    //your event-code
});

Pozdrowienia,

Petertje
źródło
1

jQuery (". sukces_mgs"). show (); setTimeout (function () {jQuery (". sukces_mgs"). hide ();}, 5000);

user3778023
źródło
0

W ten sposób możesz ustawić limit czasu po kliknięciu.

$(".selectorOnWhichEventCapture").on('click', function() {
    setTimeout(function(){
        $(".selector").doWhateverYouWantToDo();
    }, 5000);
});

// 5000 = 5s = 5000 milisek

Aakash Pahuja
źródło