( ดูการแก้ไขล่าสุดในคำตอบนี้หากคุณต้องการใช้.on()
กับองค์ประกอบที่มี JavaScript )
ใช้สิ่งนี้สำหรับองค์ประกอบที่ไม่ได้บรรจุโดยใช้ JavaScript:
$(".selector").on("mouseover", function () {
//stuff to do on mouseover
});
.hover()
มีตัวจัดการมันเอง: http://api.jquery.com/hover/
หากคุณต้องการทำสิ่งต่าง ๆ เชื่อมโยงพวกเขาใน.on()
ตัวจัดการดังนี้
$(".selector").on({
mouseenter: function () {
//stuff to do on mouse enter
},
mouseleave: function () {
//stuff to do on mouse leave
}
});
ตามคำตอบที่ให้ไว้ด้านล่างคุณสามารถใช้hover
กับ.on()
แต่:
แม้ว่าจะไม่แนะนำให้ใช้รหัสใหม่อย่างรุนแรง แต่คุณอาจเห็นชื่อ "hover" หลอกใช้เป็นชวเลขสำหรับสตริง "mouseenter mouseleave" มันแนบตัวจัดการเหตุการณ์เดียวสำหรับสองเหตุการณ์เหล่านั้นและตัวจัดการต้องตรวจสอบ event.type เพื่อตรวจสอบว่าเหตุการณ์เป็น mouseenter หรือ mouseleave อย่าสับสน "pseudo-event-name" ด้วยวิธี. hover () ซึ่งยอมรับหนึ่งหรือสองฟังก์ชั่น
นอกจากนี้ยังมีข้อได้เปรียบที่ไม่มีประสิทธิภาพในการใช้มันและมันเป็นเรื่องใหญ่มากขึ้นกว่าเพียงแค่ใช้หรือmouseenter
mouseleave
คำตอบที่ฉันให้ต้องใช้รหัสน้อยลงและเป็นวิธีที่เหมาะสมในการบรรลุสิ่งนี้
แก้ไข
เป็นเวลานานแล้วที่คำถามนี้ได้รับคำตอบและดูเหมือนว่าจะมีแรงฉุดบ้าง รหัสข้างต้นยังคงมีอยู่ แต่ฉันต้องการเพิ่มบางอย่างลงในคำตอบเดิมของฉัน
ในขณะที่ฉันชอบใช้mouseenter
และmouseleave
(ช่วยให้ฉันเข้าใจว่าเกิดอะไรขึ้นในรหัส) ด้วย.on()
มันก็เหมือนกับการเขียนต่อไปนี้ด้วยhover()
$(".selector").hover(function () {
//stuff to do on mouse enter
},
function () {
//stuff to do on mouse leave
});
ตั้งแต่คำถามเดิมไม่ได้ถามว่าพวกเขาอย่างถูกต้องสามารถใช้on()
กับhover()
ฉันคิดว่าฉันจะแก้ไขการใช้งานของon()
และไม่พบว่ามันไม่จำเป็นที่จะต้องเพิ่มhover()
รหัสในเวลานั้น
แก้ไข 11 ธันวาคม 2012
คำตอบใหม่บางส่วนระบุไว้ด้านล่างโดยละเอียดว่า.on()
ควรจะทำงานอย่างไรหากมีการป้อนdiv
คำถามโดยใช้ JavaScript ตัวอย่างเช่นสมมติว่าคุณเติมเหตุการณ์การdiv
ใช้ jQuery .load()
เช่น:
(function ($) {
//append div to document body
$('<div class="selector">Test</div>').appendTo(document.body);
}(jQuery));
รหัสข้างต้นสำหรับ.on()
จะไม่คงอยู่ แต่คุณควรแก้ไขรหัสของคุณเล็กน้อยเช่นนี้
$(document).on({
mouseenter: function () {
//stuff to do on mouse enter
},
mouseleave: function () {
//stuff to do on mouse leave
}
}, ".selector"); //pass the element as an argument to .on
รหัสนี้จะทำงานสำหรับองค์ประกอบที่มี JavaScript หลังจาก.load()
เหตุการณ์เกิดขึ้น เพียงเปลี่ยนอาร์กิวเมนต์ของคุณเป็นตัวเลือกที่เหมาะสม
mouseenter
และmouseleave
ตามที่แนะนำโดย calebthebrewer