ฉันได้ใช้เสมอmouseover
เหตุการณ์ แต่ในขณะที่อ่านเอกสาร jQuery mouseenter
ผมพบว่า ดูเหมือนว่าพวกเขาจะทำงานเหมือนกันทุกประการ
มีความแตกต่างระหว่างทั้งสองหรือไม่และถ้าเป็นเช่นนั้นฉันควรใช้มันเมื่อใด
(ยังใช้กับmouseout
vs mouseleave
)
ฉันได้ใช้เสมอmouseover
เหตุการณ์ แต่ในขณะที่อ่านเอกสาร jQuery mouseenter
ผมพบว่า ดูเหมือนว่าพวกเขาจะทำงานเหมือนกันทุกประการ
มีความแตกต่างระหว่างทั้งสองหรือไม่และถ้าเป็นเช่นนั้นฉันควรใช้มันเมื่อใด
(ยังใช้กับmouseout
vs mouseleave
)
คำตอบ:
คุณสามารถลองตัวอย่างต่อไปนี้ได้จากหน้าเอกสาร jQuery มันเป็นการสาธิตเชิงโต้ตอบเล็กน้อยที่ทำให้ชัดเจนและคุณสามารถเห็นด้วยตัวคุณเอง
ในระยะสั้นคุณจะสังเกตเห็นว่าการวางเมาส์เหนือเหตุการณ์เกิดขึ้นในองค์ประกอบเมื่อคุณอยู่เหนือองค์ประกอบนั้นมาจากองค์ประกอบย่อยหรือองค์ประกอบหลัก แต่เมาส์เข้าสู่เหตุการณ์จะเกิดขึ้นเมื่อเมาส์เคลื่อนย้ายจากนอกองค์ประกอบนี้ไปยังองค์ประกอบนี้
หรือตามที่mouseover()
เอกสารวางไว้:
[
.mouseover()
] สามารถทำให้เกิดอาการปวดหัวจำนวนมากเนื่องจากเหตุการณ์เดือด ตัวอย่างเช่นเมื่อตัวชี้เมาส์เลื่อนไปที่องค์ประกอบด้านในในตัวอย่างนี้เหตุการณ์การวางเมาส์จะถูกส่งไปยังสิ่งนั้นจากนั้นไหลไปสู่ด้านนอก สิ่งนี้สามารถทริกเกอร์ตัวจัดการการวางเมาส์ที่ถูกผูกไว้ของเราในเวลาที่ไม่เหมาะสม ดูการอภิปรายสำหรับ.mouseenter()
ทางเลือกที่มีประโยชน์
Mouseenter และ MouseLeave ไม่ตอบสนองต่อเหตุการณ์เดือดในขณะที่การวางเมาส์และ mouseout ทำ
นี่คือบทความที่อธิบายพฤติกรรม
$(document).ready(function() {
$("#outer_mouseover").bind
("Mouse Over Mouse Out",function(event){
console.log(event.type," :: ",this.id);})
$("#outer_mouseenter").bind
("Mouse enter Mouse leave",function(event){
console.log(event.type," :: ",this.id);})
});
mouseenter
"จะเกิดขึ้นเมื่อเมาส์เคลื่อนย้ายจากองค์ประกอบหลักไปยังองค์ประกอบ" เท่านั้น เหตุการณ์เกิดขึ้นเมื่อเมาส์เปลี่ยนจากการอยู่นอกองค์ประกอบเป็นภายใน ไม่สำคัญว่าเมาส์มาจากองค์ประกอบใด เป็นความจริงที่ว่าเม้าส์มักจะมาจากพ่อแม่ แต่ไม่เสมอไป เช่นหากผู้ปกครองไม่มีช่องว่างภายในหรือเส้นขอบจากนั้นเมาส์สามารถป้อนตรงจากปู่ย่าตายายและmouseenter
จะยังคงยิง ในความเป็นจริงมันสามารถป้อนองค์ประกอบจากนอกวิวพอร์ต (ถ้าองค์ประกอบอยู่ที่ขอบ) และเหตุการณ์ยังคงยิง