jQuery tự động ẩn phần tử sau 5 giây


92

Có thể tự động ẩn một phần tử trong trang web 5 giây sau khi tải biểu mẫu bằng jQuery không?

Về cơ bản, tôi có

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

mà tôi muốn biến mất sau 5 giây. Tôi đã xem giao diện người dùng jQuery và hiệu ứng ẩn nhưng tôi gặp một chút khó khăn để làm cho nó hoạt động theo cách tôi muốn.

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

                var selectedEffect = 'blind';

                var options = {};

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

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

Tôi muốn loại bỏ chức năng nhấp chuột và thêm một phương thức thời gian chờ gọi runEffect () sau 5 giây.

Câu trả lời:


116
$(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);
});

Lưu ý : Để hàm jQuery hoạt động bên trong setTimeout, bạn nên bọc nó bên trong

function() { ... }

1
Tôi đã thử mã này trên trang web của mình. Nhưng, nó không hoạt động. Ngoài tập lệnh js này, tôi cần làm gì khác để làm cho nó hoạt động? Vui lòng cho lời khuyên! Cảm ơn bạn!
Jornes

1
@Jornes đảm bảo rằng tập lệnh này được đặt sau <script src="jquery.js"></script>trên trang của bạn.
Konstantin Tarkus

217
$('#selector').delay(5000).fadeOut('slow');

2
Hãy cảnh báo rằng giải pháp này phá vỡ $ ('html'). Click (function () {// click ra ngoài $ ("# selector"). FadeOut ();});
max4ever

Cảm ơn vì giải pháp đơn giản này.
Ron

Cảm ơn bạn giải pháp rất đơn giản!
Anahit DEV

9

Bạn co thể thử :

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

Nếu bạn sử dụng cái này thì div của bạn sẽ bị ẩn sau 30 giây. Tôi cũng đã thử cái này và nó hiệu quả với tôi.


3

Xin lưu ý rằng bạn có thể cần hiển thị lại văn bản div sau khi nó đã biến mất. Vì vậy, bạn cũng sẽ cần phải làm trống và sau đó hiển thị lại phần tử tại một số điểm.

Bạn có thể làm điều này với 1 dòng mã:

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

Nếu bạn đang sử dụng jQuery, bạn không cần setTimeout, ít nhất là không tự động ẩn một phần tử.


1

Bạn sử dụng setTimeout trên hàm runEffect:

function runEffect() {
    setTimeout(function(){
        var selectedEffect = 'blind';
        var options = {};
        $("#successMessage").hide(selectedEffect, options, 500)
     }, 5000);
}

1

Tôi nghĩ, bạn cũng có thể làm điều gì đó như ...

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

và thực hiện các hiệu ứng động của bạn khi nhấp vào sự kiện ...

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

Lời chào hỏi,



0

Đây là cách bạn có thể đặt thời gian chờ sau khi nhấp chuột.

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

// 5000 = 5sec = 5000 milisec

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.