jQuery autohide element หลังจาก 5 วินาที


92

เป็นไปได้ไหมที่จะซ่อนองค์ประกอบโดยอัตโนมัติในหน้าเว็บ 5 วินาทีหลังจากโหลดแบบฟอร์มโดยใช้ jQuery

โดยทั่วไปฉันมี

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

ที่ฉันอยากจะหายไปหลังจากผ่านไป 5 วินาที ฉันได้ดู jQuery UI และเอฟเฟกต์การซ่อนแล้ว แต่ฉันมีปัญหาเล็กน้อยในการทำให้มันทำงานในแบบที่ฉันต้องการ

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

                var selectedEffect = 'blind';

                var options = {};

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

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

ฉันต้องการลบฟังก์ชันการคลิกออกและเพิ่มวิธีการหมดเวลาที่เรียกใช้ runEffect () หลังจากผ่านไป 5 วินาที

คำตอบ:


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);
});

หมายเหตุ : เพื่อให้ฟังก์ชัน jQuery ของคุณทำงานภายใน setTimeout คุณควรห่อไว้ด้านใน

function() { ... }

1
ฉันลองใช้รหัสนี้บนเว็บไซต์ของฉัน แต่มันไม่ได้ผล นอกเหนือจากสคริปต์ js นี้ฉันต้องมีอะไรอีกบ้างเพื่อให้มันใช้งานได้ โปรดให้คำแนะนำ! ขอบคุณ!
Jornes

1
@Jornes ตรวจสอบให้แน่ใจว่าสคริปต์นี้อยู่หลัง<script src="jquery.js"></script>บนหน้าของคุณ
Konstantin Tarkus

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

2
ขอเตือนว่าโซลูชันนี้ทำลาย $ ('html') คลิก (function () {// คลิกด้านนอก $ ("# selector") fadeOut ();});
max4ever

ขอบคุณสำหรับวิธีง่ายๆนี้
รอน

ขอบคุณวิธีง่ายๆ!
Anahit DEV

9

คุณสามารถลอง :

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

หากคุณใช้สิ่งนี้ Div ของคุณจะถูกซ่อนหลังจาก 30 วินาทีฉันลองอันนี้ด้วยและมันก็ใช้ได้สำหรับฉัน


3

โปรดทราบว่าคุณอาจต้องแสดงข้อความ div อีกครั้งหลังจากที่มันหายไป ดังนั้นคุณจะต้องว่างเปล่าแล้วแสดงองค์ประกอบอีกครั้งในบางจุด

คุณสามารถทำได้โดยใช้รหัส 1 บรรทัด:

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

หากคุณใช้ jQuery คุณไม่จำเป็นต้องใช้ setTimeout อย่างน้อยก็ไม่ต้องซ่อนองค์ประกอบอัตโนมัติ



1

ฉันคิดว่าคุณสามารถทำอะไรบางอย่างเช่น ...

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

และทำเอฟเฟกต์เคลื่อนไหวของคุณในเหตุการณ์คลิก ...

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

ทักทาย,



0

นี่คือวิธีที่คุณสามารถตั้งค่าระยะหมดเวลาหลังจากที่คุณคลิก

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

// 5000 = 5 วินาที = 5,000 มิลลิวินาที

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.