ซ่อน div หลังจากผ่านไปสองสามวินาที


124

ฉันสงสัยว่าใน jquery ฉันจะซ่อน div ได้อย่างไรภายในไม่กี่วินาที เช่นเดียวกับข้อความของ Gmail

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


1
แค่ซ่อนก็ดีพอแล้วหรือคุณต้องการให้มันจางลง?
Joel Coehoorn

คำตอบ:


248

ซึ่งจะซ่อน div หลังจากผ่านไป 1 วินาที (1,000 มิลลิวินาที)

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
และคุณเอาชนะJoel Coehoorn ที่บ้าคลั่งได้อย่างยอดเยี่ยมในนัดเดียว! :)
cregox

3
@James เพื่อตรวจสอบว่ามีความแตกต่างในผลสุดท้ายไม่มี แต่ผมคิดว่าการใช้งานที่ใช้.delay()มีมากขึ้น "แม่" jQueryและสง่างามสำหรับ
Paul T.Rawkeen

คุณสามารถแทนที่.fadeOut('fast')ด้วย.hide()สำหรับซ่อนทันที div ที่
Raptor

91

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

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

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

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


7
นี่เป็นสิ่งที่ดีกว่าเพราะฉันไม่ต้องใช้ setTimeout และโค้ดจะอ่านง่ายกว่า
Marek Bar

12

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

ซ่อนบริสุทธิ์หน่วงเวลาหนึ่งวินาที

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


10

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

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

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

ด้วยการให้ช่วงเวลาสั้น ๆ ที่ดีดูเหมือนว่าจะเป็นแบบทันทีเช่นเดียวกับฟังก์ชัน. hidden ทั่วไป



3

การใช้ตัวจับเวลา jQuery จะช่วยให้คุณมีชื่อที่เกี่ยวข้องกับตัวจับเวลาที่แนบมากับวัตถุ คุณสามารถติดตั้งตัวจับเวลาหลายตัวกับวัตถุและหยุดการจับเวลาได้

$("#myid").oneTime(1000, "mytimer1" function() {
  $("#something").hide();
}).oneTime(2000, "mytimer2" function() {
  $("#somethingelse").show();  
});

$("#myid").stopTime("mytimer2");

ฟังก์ชัน eval (และญาติของฟังก์ชัน setTimeout และ setInterval) ให้การเข้าถึงคอมไพเลอร์ JavaScript บางครั้งสิ่งนี้จำเป็น แต่ในกรณีส่วนใหญ่บ่งชี้ว่ามีการเข้ารหัสที่ไม่ดีอย่างยิ่ง ฟังก์ชัน eval เป็นคุณลักษณะที่ใช้ผิดวัตถุประสงค์มากที่สุดของ JavaScript

http://www.jslint.com/lint.html


2

อาจเป็นวิธีที่ง่ายที่สุดคือการใช้ปลั๊กอินตัวจับเวลา http://plugins.jquery.com/project/timersแล้วเรียกสิ่งที่ต้องการ

$(this).oneTime(1000, function() {
    $("#something").hide();
  });

1
มีเหตุผลที่น่าสนใจในการใช้ปลั๊กอินตัวจับเวลามากกว่า setTimeout หรือ setInterval หรือไม่?
ผู้ใช้จ่าย

2
ฉันจะบอกว่าการดาวน์โหลดและแนบปลั๊กอิน jquery นั้นง่ายน้อยกว่าการใช้ setTimeout
Nathan Ridley

1
ฉันไม่คิดว่านี่เป็นสิ่งที่ไม่ดี แต่เนื่องจากเป็นเรื่องยากที่ฉันจะใช้ตัวจับเวลาในโค้ดของฉันการมีปลั๊กอินนั้นอยู่รอบ ๆ (อ่าน: โค้ดพิเศษขยายตัว) สำหรับสองสามครั้งนั้นไม่ได้มีค่าเกินดุล หากคุณกำลังเขียนโค้ดจำนวนมากที่จำเป็นต้องใช้ตัวจับเวลาและใช้ jQuery ฉันสามารถเห็นได้ว่าทำไมปลั๊กอินนี้จึงมีประโยชน์มากในการใช้ไวยากรณ์ jQuery ...
Jason Bunting


0
<script>
      $(function() {
      $(".hide-it").hide(7000);
    });              
</script>

<div id="hide-it">myDiv</div>

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