สำหรับช่วงการเปลี่ยนภาพคุณสามารถใช้รายการต่อไปนี้เพื่อตรวจหาจุดสิ้นสุดของการเปลี่ยนแปลงผ่าน jQuery:
$("#someSelector").bind("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ ... });
Mozilla มีการอ้างอิงที่ดีเยี่ยม:
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions#Detecting_the_start_and_completion_of_a_transition
สำหรับภาพเคลื่อนไหวมันคล้ายกันมาก:
$("#someSelector").bind("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){ ... });
โปรดทราบว่าคุณสามารถส่งผ่านสตริงเหตุการณ์ทั้งหมดนำหน้าเบราว์เซอร์ไปยังวิธีการผูก () พร้อมกันเพื่อสนับสนุนการยิงเหตุการณ์ในเบราว์เซอร์ทั้งหมดที่สนับสนุน
ปรับปรุง:
ตามข้อคิดเห็นโดย Duck: คุณใช้.one()
วิธีการของ jQuery เพื่อให้แน่ใจว่า handler ยิงเพียงครั้งเดียว ตัวอย่างเช่น:
$("#someSelector").one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ ... });
$("#someSelector").one("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){ ... });
อัปเดต 2:
jQuery bind()
วิธีการได้รับการคัดค้านและวิธีการที่เป็นที่ต้องการของon()
jQuery 1.7
bind()
นอกจากนี้คุณยังสามารถใช้off()
วิธีการในฟังก์ชั่นการโทรกลับเพื่อให้แน่ใจว่ามันจะถูกยิงเพียงครั้งเดียว นี่คือตัวอย่างที่เทียบเท่ากับการใช้one()
วิธีการ:
$("#someSelector")
.on("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd",
function(e){
// do something here
$(this).off(e);
});
อ้างอิง: