รหัส PHP:
<a id="a$id" onclick="check($id,1)" href="javascript:void(0)" class="black">Qualify</a>
ฉันต้องการลบonclick="check($id,1)
ลิงก์เพื่อไม่ให้คลิกลิงก์หรือ " check($id,1)
ไม่สามารถเริ่มทำงานได้ฉันจะทำอย่างไรกับ JQuery?
รหัส PHP:
<a id="a$id" onclick="check($id,1)" href="javascript:void(0)" class="black">Qualify</a>
ฉันต้องการลบonclick="check($id,1)
ลิงก์เพื่อไม่ให้คลิกลิงก์หรือ " check($id,1)
ไม่สามารถเริ่มทำงานได้ฉันจะทำอย่างไรกับ JQuery?
คำตอบ:
ทางเก่า (ก่อน 1.7):
$("...").attr("onclick", "").unbind("click");
วิธีใหม่ (1.7+):
$("...").prop("onclick", null).off("click");
(แทนที่ ... ด้วยตัวเลือกที่คุณต้องการ)
Removing an inline onclick event handler using .removeAttr() doesn't achieve the desired effect in Internet Explorer 6, 7, or 8. To avoid potential problems, use .prop() instead
.prop()
สำหรับ IE11 ด้วย
ฉันรู้ว่ามันค่อนข้างเก่า แต่เมื่อคนแปลกหน้าหลงทางพบคำถามนี้เพื่อหาคำตอบ (เหมือนที่ฉันทำ) นี่เป็นวิธีที่ดีที่สุดที่จะทำแทนที่จะใช้ removeAttr ():
$element.prop("onclick", null);
อ้างถึงdoku อย่างเป็นทางการของ jQuerys :
"การลบตัวจัดการเหตุการณ์ onclick แบบอินไลน์โดยใช้. removeAttr () ไม่บรรลุผลตามที่ต้องการใน Internet Explorer 6, 7 หรือ 8 เพื่อหลีกเลี่ยงปัญหาที่อาจเกิดขึ้นให้ใช้. prop () แทน"
<span onlick="method()">sometext>/span>
งานนี้ไม่มีการผูกมัดอย่างสมบูรณ์และใช้งานได้ดี
onclick
คุณสมบัติสมมติว่าคุณเพิ่มเหตุการณ์คลิกของคุณในบรรทัดดังนี้:
<button id="myButton" onclick="alert('test')">Married</button>
จากนั้นคุณสามารถลบเหตุการณ์ในลักษณะนี้:
$("#myButton").prop('onclick', null); // Removes 'onclick' property if found
click
ผู้ฟังเหตุการณ์สมมติว่าคุณเพิ่มเหตุการณ์การคลิกโดยกำหนดตัวฟังเหตุการณ์ดังนี้:
$("button").on("click", function() { alert("clicked!"); });
... หรือแบบนี้:
$("button").click(function() { alert("clicked!"); });
จากนั้นคุณสามารถลบเหตุการณ์ในลักษณะนี้:
$("#myButton").off('click'); // Removes other events if found
หากคุณไม่แน่ใจว่ามีการเพิ่มกิจกรรมของคุณอย่างไรคุณสามารถรวมทั้งสองอย่างได้ดังนี้:
$("#myButton").prop('onclick', null) // Removes 'onclick' property if found
.off('click'); // Removes other events if found
หากคุณใช้ jquery 1.7
$('html').off('click');
อื่น
$('html').unbind('click');
มันง่ายมากโดยใช้ removeAttr
$(element).removeAttr("onclick");
หลังจากพยายามอย่างหนักกับการผูก, เลิกผูก, เปิด, ปิด, คลิก, attr, removeAttr, prop ฉันทำให้มันใช้งานได้ ดังนั้นฉันมีสถานการณ์ต่อไปนี้: ใน html ของฉันฉันไม่ได้แนบตัวจัดการ onclick แบบอินไลน์ใด ๆ
จากนั้นใน Javascript ของฉันฉันใช้สิ่งต่อไปนี้เพื่อเพิ่มตัวจัดการ onclick แบบอินไลน์:
$(element).attr('onclick','myFunction()');
ในการลบสิ่งนี้ในภายหลังจาก Javascript ฉันใช้สิ่งต่อไปนี้:
$(element).prop('onclick',null);
นี่เป็นวิธีที่ใช้ได้ผลสำหรับฉันในการเชื่อมโยงและเลิกเชื่อมเหตุการณ์การคลิกแบบ dinamically ใน Javascript อย่าลืมแทรกตัวจัดการ onclick แบบอินไลน์ในองค์ประกอบของคุณ
.on('click', myFunction)
(ทราบว่าmyFunction
เป็นไม่ได้ในเครื่องหมายคำพูด) แล้วต่อมา.off('click')
จะเกิดอะไรขึ้นถ้าเหตุการณ์ onclick ไม่ได้อยู่บนองค์ประกอบโดยตรง แต่มาจากองค์ประกอบหลัก สิ่งนี้ควรใช้งานได้:
$(".noclick").attr('onclick','').unbind('click');
$(".noclick").click(function(e){
e.preventDefault();
e.stopPropagation();
return false;
});
ลองใช้วิธีนี้หากคุณเลิกผูกเหตุการณ์ onclick ด้วย ID จากนั้นใช้:
$('#youLinkID').attr('onclick','').unbind('click');
ลองใช้วิธีนี้หากคุณเลิกผูกเหตุการณ์ onclick ตามชั้นเรียนแล้วใช้:
$('.className').attr('onclick','').unbind('click');