javascript - วิธีการยกเลิกการผูก listener ที่เรียกใช้ event.preventDefault() (โดยใช้ jQuery)?
jquery toggle เรียกใช้ preventDefault() โดยค่าเริ่มต้น ดังนั้นค่าปริยายจึงใช้งานไม่ได้ คุณไม่สามารถคลิกที่ช่องทำเครื่องหมาย คุณไม่สามารถคลิกลิงก์ เป็นต้น
สามารถกู้คืนตัวจัดการเริ่มต้นได้หรือไม่?
คำตอบ #1
ในกรณีของฉัน:
$('#some_link').click(function(event){
event.preventDefault();
});
$ ('#some_link').unbind('click'); ใช้ได้เป็นวิธีเดียวในการคืนค่าการทำงานเริ่มต้น
ดังที่เห็นที่นี่: https://stackoverflow.com/a/1673570/211514
คำตอบ #2
มันค่อนข้างง่าย
ลองสมมติว่าคุณทำอะไรบางอย่างแบบ
document.ontouchmove = function(e){ e.preventDefault(); }
ตอนนี้เพื่อกลับไปสู่สถานการณ์เดิม ให้ทำตามด้านล่างนี้...
document.ontouchmove = function(e){ return true; }
จากเว็บไซต์นี้
คำตอบ #3
ไม่สามารถกู้คืน preventDefault() ได้ แต่สิ่งที่คุณทำได้คือหลอกมัน :)
<div id="t1">Toggle</div>
<script type="javascript">
$('#t1').click(function (e){
if($(this).hasClass('prevented')){
e.preventDefault();
$(this).removeClass('prevented');
}else{
$(this).addClass('prevented');
}
});
</script>
ถ้าคุณต้องการก้าวไปอีกขั้น คุณสามารถใช้ปุ่มทริกเกอร์เพื่อกระตุ้นเหตุการณ์ได้ด้วย
คำตอบ #4
function DoPrevent(e) {
e.preventDefault();
e.stopPropagation();
}
// Bind:
$(element).on('click', DoPrevent);
// UnBind:
$(element).off('click', DoPrevent);
