ค้นหาเว็บไซต์

javascript - ซ่อน div หลังจากไม่กี่วินาที


ฉันสงสัยว่า ใน jQuery ฉันสามารถซ่อน div หลังจากผ่านไปไม่กี่วินาทีได้อย่างไร? เช่น ข้อความใน Gmail เป็นตัวอย่าง

ฉันพยายามเต็มที่แล้วแต่ไม่สามารถทำให้มันใช้งานได้

คำตอบ #1

สิ่งนี้จะซ่อน div หลังจาก 1 วินาที (1000 มิลลิวินาที)

setTimeout(function() {
    $('#mydiv').fadeOut('fast');
}, 1000); // <-- time in milliseconds
#mydiv{
    width: 100px;
    height: 100px;
    background: #000;
    color: #fff;
    text-align: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mydiv">myDiv</div>

ถ้าคุณแค่ต้องการซ่อนโดยไม่ให้จาง ใช้ hide()

คำตอบ #2

คุณสามารถลองใช้ .delay()

$(".formSentMsg").delay(3200).fadeOut(300);

เรียก div ตั้งเวลาเลื่อนเป็นมิลลิวินาทีและตั้งค่าคุณสมบัติที่คุณต้องการเปลี่ยน ในกรณีนี้ฉันใช้ .fadeOut() เพื่อให้สามารถทำอนิเมชันได้ แต่คุณก็สามารถใช้ .hide() ได้เช่นกัน

http://api.jquery.com/delay/

คำตอบ #3

jQuery มีวิธีหลากหลายในการซ่อน div ในลักษณะเป็นช่วงเวลาโดยไม่ต้องตั้งค่าและล้างหรือตั้งค่าใหม่ตัวจับเวลาหรือโปรแกรมจัดการเหตุการณ์อื่น ๆ ภายหลัง นี่คือตัวอย่างบางส่วน

หนังแท้ หน่วงเวลา 1 วินาที

// hide in one second
$('#mydiv').delay(1000).hide(0); 

หนังแท้ ไม่มีการล่าช้า

// hide immediately
$('#mydiv').delay(0).hide(0); 

ซ่อนแบบเคลื่อนไหว

// start hide in one second, take 1/2 second for animated hide effect
$('#mydiv').delay(1000).hide(500); 

ค่อยๆ จาง

// start fade out in one second, take 300ms to fade
$('#mydiv').delay(1000).fadeOut(300); 

นอกจากนี้ วิธีการต่างๆ สามารถรับชื่อคิวหรือฟังก์ชันเป็นพารามิเตอร์ที่สองได้ (ขึ้นอยู่กับวิธีการ) เอกสารสำหรับการเรียกทั้งหมดข้างต้นและการเรียกอื่นๆ ที่เกี่ยวข้องสามารถดูได้ที่นี่: https://api.jquery.com/category/effects/

คำตอบ #4

มีวิธีที่ง่ายมากในการทำสิ่งนี้

ปัญหาคือ .delay มีผลเฉพาะกับอนิเมชัน ดังนั้นสิ่งที่คุณต้องทำคือทำให้ .hide() ทำงานเหมือนอนิเมชันโดยการกำหนดระยะเวลา

$("#whatever").delay().hide(1);

โดยการกำหนดระยะเวลาสั้น ๆ ให้กับมัน มันจะดูเหมือนเป็นทันทีเหมือนกับฟังก์ชัน .hide ปกติ

บทความที่เกี่ยวข้อง