ค้นหาเว็บไซต์

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);

บทความที่เกี่ยวข้อง