การเข้าใจการจัดการเหตุการณ์ Hover
ใน jQuery
เมื่อทำงานกับ jQuery การจัดการตัวจัดการเหตุการณ์สำหรับองค์ประกอบสามารถเป็นเรื่องที่ยุ่งยาก โดยเฉพาะเมื่อคุณต้องการรักษาความยืดหยุ่นกับฟังก์ชันเหตุการณ์ต้นฉบับ คุณอาจพบปัญหาทั่วไปเมื่อคุณต้องการเปลี่ยนแปลงพฤติกรรมการเลื่อนเมาส์สำหรับบางองค์ประกอบชั่วคราว แต่ก็ต้องการรักษาความสามารถในการคืนค่าพฤติกรรมดั้งเดิมในภายหลังโดยไม่ต้องเปลี่ยนแปลงโค้ดเดิม บล็อกโพสต์นี้จะนำคุณไปสู่ขั้นตอนในการอ่านและจัดการฟังก์ชันการเรียกกลับที่ผูกพันด้วย hover
ใน jQuery อย่างมีประสิทธิภาพ
ปัญหา
ลองนึกภาพว่าคุณได้ออกแบบโมดูลที่คุณต้องปรับพฤติกรรมการเลื่อนเมาส์ขององค์ประกอบเฉพาะในหน้าเว็บของคุณ ตัวอย่างเช่น คุณกำลังใช้ฟังก์ชันการเลื่อนเมาส์ใหม่โดยไม่สามารถเข้าถึงโค้ดเดิมที่ฟังก์ชันเหล่านั้นถูกกำหนด ความท้าทายหลักที่นี่คือวิธีการบันทึกฟังก์ชันการเลื่อนเมาส์เดิมเพื่อให้คุณสามารถคืนค่าได้ในภายหลัง
สถานการณ์ตัวอย่าง
สมมุติว่าคุณมีพฤติกรรมการเลื่อนเมาส์ใน jQuery ดังนี้:
$('#foo').hover(
function() { console.log('Hovered in'); },
function() { console.log('Hovered out'); }
);
ตอนนี้ คุณต้องการแทนที่ฟังก์ชันเหล่านี้ชั่วคราว แต่คุณไม่ต้องการสูญเสียตัวจัดการเดิม
การจัดการฟังก์ชันการเลื่อนเมาส์ใน jQuery
การเข้าใจการผูกเหตุการณ์
ใน jQuery การเรียกใช้วิธีการเหตุการณ์เช่น hover()
จะเพิ่มตัวจัดการเหตุการณ์ใหม่แต่จะไม่แทนที่ตัวเก่า แทนที่จะลบฟังก์ชันที่เรียกคืนอยู่ในขณะนี้ มันจะแค่เพิ่มใหม่ลงไป ดังนั้นการคืนค่าพฤติกรรมเก่าจึงต้องการแนวทางเชิงกลยุทธ์
การตั้งชื่อเหตุการณ์เพื่อการจัดการที่ง่ายขึ้น
หนึ่งในแนวปฏิบัติที่ดีที่สุดใน jQuery คือการใช้ การตั้งชื่อเหตุการณ์ สิ่งนี้ช่วยให้คุณสามารถจัดกลุ่มเหตุการณ์และจัดการได้อย่างมีประสิทธิภาพ
วิธีการแบบขั้นตอน
-
เก็บตัวจัดการเหตุการณ์เก่า: คุณจะต้องมีกระบวนการเพื่อบันทึกพฤติกรรมการเลื่อนเมาส์เก่า สำหรับสิ่งนี้ คุณสามารถใช้ประโยชน์จากเมธอด
jQuery.data()
-
ตั้งค่าพฤติกรรมการเลื่อนเมาส์ใหม่: แทนที่ฟังก์ชันการเลื่อนเมาส์เดิมด้วยฟังก์ชันใหม่
-
คืนค่าพฤติกรรมเก่า: เมื่อจำเป็น ให้คืนค่าตัวจัดการเก่าด้วยอ้างอิงที่เก็บไว้
การนำไปใช้ตัวอย่าง
นี่คือวิธีที่คุณสามารถนำขั้นตอนข้างต้นไปใช้:
// ขั้นตอนที่ 1: บันทึกพฤติกรรมการเลื่อนเมาส์เก่า
$('#foo').data('oldHoverIn', $('#foo').data('events').hover[0].handler);
$('#foo').data('oldHoverOut', $('#foo').data('events').hover[1].handler);
// ขั้นตอนที่ 2: ตั้งค่าพฤติกรรมการเลื่อนเมาส์ใหม่
$('#foo').hover(
function() { console.log('New hover in'); },
function() { console.log('New hover out'); }
);
// ขั้นตอนที่ 3: คืนค่าพฤติกรรมการเลื่อนเมาส์เก่า
$('#foo').hover(
$('#foo').data('oldHoverIn'),
$('#foo').data('oldHoverOut')
);
ข้อพิจารณาที่สำคัญ
-
หลีกเลี่ยงการปรับเปลี่ยนโค้ดเดิม: วิธีการของคุณไม่ควรกระทบกับโค้ดเริ่มต้นที่ตั้งค่าตัวจัดการการเลื่อนเมาส์ต้นฉบับ การใช้การตั้งชื่อเหตุการณ์ช่วยให้จัดระเบียบตัวจัดการได้
-
ตรวจสอบเวอร์ชันของ jQuery: ให้แน่ใจว่าคุณใช้เวอร์ชันของ jQuery ที่รองรับเมธอด
.data()
และฟังก์ชันการจัดการเหตุการณ์ที่คุณต้องการ
สรุป
การจัดการฟังก์ชันการเรียกกลับเมื่อเลื่อนเมาส์ใน jQuery อาจดูน่ากลัว โดยเฉพาะเมื่อคุณมุ่งหมายที่จะรักษาพฤติกรรมที่มีอยู่ในขณะที่กำลังดำเนินการพฤติกรรมใหม่ โดยการใช้ jQuery.data()
อย่างมีกลยุทธ์และการใช้การตั้งชื่อเหตุการณ์ คุณสามารถบรรลุเป้าหมายได้โดยไม่กระทบต่อส่วนอื่นๆ ของฟังก์ชันการทำงานในแอพพลิเคชันของคุณ
เมื่อปฏิบัติตามขั้นตอนที่ระบุในบล็อกโพสต์นี้ คุณจะพร้อมอย่างดีในการจัดการพฤติกรรมการเลื่อนเมาส์อย่างยืดหยุ่นในโครงการ jQuery ใดๆ.