ใช้$('#myDiv').click(function(){
เป็นที่ดีกว่าในขณะที่มันเป็นไปตามรูปแบบการลงทะเบียนเหตุการณ์มาตรฐาน (jQuery ใช้ภายในaddEventListener
และattachEvent
)
โดยทั่วไปการลงทะเบียนเหตุการณ์ด้วยวิธีการที่ทันสมัยเป็นวิธีที่ไม่สร้างความรำคาญในการจัดการเหตุการณ์ นอกจากนี้ในการลงทะเบียนมากกว่าหนึ่งฟังเหตุการณ์สำหรับเป้าหมายที่คุณสามารถโทรaddEventListener()
หาเป้าหมายเดียวกัน
var myEl = document.getElementById('myelement');
myEl.addEventListener('click', function() {
alert('Hello world');
}, false);
myEl.addEventListener('click', function() {
alert('Hello world again!!!');
}, false);
http://jsfiddle.net/aj55x/1/
ทำไมต้องใช้ addEventListener (จาก MDN)
addEventListener เป็นวิธีการลงทะเบียนฟังเหตุการณ์ตามที่ระบุใน W3C DOM มันมีประโยชน์ดังนี้:
- อนุญาตให้เพิ่มมากกว่าตัวจัดการเดียวสำหรับเหตุการณ์ สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับไลบรารี DHTML หรือส่วนขยาย Mozilla ที่จำเป็นต้องใช้งานได้ดีแม้ว่าจะใช้งานไลบรารี / ส่วนขยายอื่น ๆ
- มันช่วยให้คุณควบคุมเฟสอย่างละเอียดยิ่งขึ้นเมื่อผู้ฟังเปิดใช้งาน (การจับภาพกับการเดือดปุด ๆ )
- มันทำงานได้กับองค์ประกอบ DOM ใด ๆ ไม่เพียง แต่องค์ประกอบ HTML
เพิ่มเติมเกี่ยวกับการลงทะเบียนเหตุการณ์สมัยใหม่ -> http://www.quirksmode.org/js/events_advanced.html
วิธีอื่น ๆ เช่นการตั้งค่าคุณลักษณะ HTMLตัวอย่าง:
<button onclick="alert('Hello world!')">
หรือคุณสมบัติองค์ประกอบ DOMตัวอย่าง:
myEl.onclick = function(event){alert('Hello world');};
เก่าและสามารถเขียนทับได้ง่าย
ควรหลีกเลี่ยงแอตทริบิวต์ HTMLเนื่องจากทำให้มาร์กอัปมีขนาดใหญ่ขึ้นและอ่านได้น้อยลง ความกังวลเกี่ยวกับเนื้อหา / โครงสร้างและพฤติกรรมนั้นไม่ได้แยกจากกันทำให้เกิดข้อผิดพลาดในการค้นหา
ปัญหาเกี่ยวกับวิธีการคุณสมบัติองค์ประกอบ DOMคือตัวจัดการเหตุการณ์หนึ่งตัวเท่านั้นที่สามารถเชื่อมโยงกับองค์ประกอบต่อเหตุการณ์
เพิ่มเติมเกี่ยวกับการจัดการเหตุการณ์แบบดั้งเดิม -> http://www.quirksmode.org/js/events_tradmod.html
การอ้างอิง MDN: https://developer.mozilla.org/en-US/docs/DOM/event