เมธอด off
เมธอด off ช่วยให้สามารถยกเลิกการเชื่อมต่อฟังก์ชันจัดการเหตุการณ์จากองค์ประกอบได้ เพื่อที่จะเชื่อมต่อฟังก์ชันจัดการเหตุการณ์สามารถใช้เมธอด off
ไวยากรณ์
นี่คือวิธีการลบฟังก์ชันจัดการเหตุการณ์จากองค์ประกอบ โดยพารามิเตอร์แรกส่งผ่านเป็นสตริงซึ่งเป็นเหตุการณ์หนึ่งเหตุการณ์หรือหลายเหตุการณ์คั่นด้วยช่องว่าง พารามิเตอร์ที่สอง - ส่งผ่านตัวเลือกกรองเพิ่มเติมสำหรับองค์ประกอบลูกภายในองค์ประกอบ (ควรตรงกับที่เราได้ส่งผ่านไปในเมธอด on เมื่อเราติดตั้งฟังก์ชันจัดการเหตุการณ์) หากต้องการลบเหตุการณ์ทั้งหมดที่ใช้ delegation ให้ส่งค่า '**' พารามิเตอร์ที่สองเป็นตัวเลือกไม่บังคับ พารามิเตอร์ที่สามส่งผ่านฟังก์ชันจัดการเหตุการณ์ (ที่เราได้ติดตั้งไว้) ซึ่งรับวัตถุเหตุการณ์หรือส่งผ่าน false:
$(selector).off(events, [selector], handler(eventObject));
สามารถใช้เมธอด off ในอีกวิธีหนึ่งได้ โดยพารามิเตอร์แรกส่งผ่านเป็นวัตถุ JavaScript ซึ่งคีย์คือประเภทของเหตุการณ์ และค่าเป็นฟังก์ชันจัดการเหตุการณ์ที่เราได้เพิ่มให้กับองค์ประกอบ:
$(selector).off({'eventType': handler}, [selector]);
สามารถส่งผ่านพารามิเตอร์เดียวในรูปแบบของวัตถุ jQuery.Event ได้:
$(selector).off(event);
หากไม่ส่งผ่านพารามิเตอร์ใดๆ ให้กับเมธอด เราจะยกเลิกการเชื่อมต่อฟังก์ชันจัดการเหตุการณ์ทั้งหมดที่ติดตั้งไว้จากองค์ประกอบ:
$(selector).off();
ตัวอย่าง
ลองเพิ่มฟังก์ชันจัดการเหตุการณ์ testFunc ให้กับย่อหน้านี้ แต่ให้ลบฟังก์ชันจัดการเหตุการณ์จากย่อหน้าที่สองทันที ด้วยวิธีนี้การคลิกที่ย่อหน้าที่สองจะไม่ส่งผลอะไร (หากเราลงความคิดเห็นบรรทัดสุดท้ายของโค้ด เราจะเห็นว่าเหตุการณ์ทำงานอย่างไรเมื่อคลิกที่ย่อหน้าที่สอง):
<p id="test1">คลิก1</p>
<p id="test2">คลิก2</p>
function testFunc(event) {
alert(event.data.text);
}
$('#test1').on('click', {text: 'aaa'}, testFunc); // เพิ่ม handler
$('#test2').on('click', {text: 'bbb'}, testFunc); // เพิ่ม handler
$('#test2').off('click', testFunc); // ลบ handler