[javascript] jQuery를 사용하여 event.preventDefault ()를 호출하는 리스너를 바인딩 해제하는 방법은 무엇입니까?

jquery 토글은 기본적으로 preventDefault ()를 호출하므로 기본값이 작동하지 않습니다. 당신은 확인란을 클릭 할 수 없습니다, 당신은 링크 등을 클릭 할 수 없습니다

기본 핸들러를 복원 할 수 있습니까?



답변

나의 경우에는:

$('#some_link').click(function(event){
    event.preventDefault();
});

$('#some_link').unbind('click'); 기본 작업을 복원하는 유일한 방법으로 작동했습니다.

여기에서 볼 수 있듯이 : https://stackoverflow.com/a/1673570/211514


답변

상당히 간단합니다

당신이 같은 것을한다고 가정 해 봅시다.

document.ontouchmove = function(e){ e.preventDefault(); }

이제 원래 상황으로 되돌리려면 다음을 수행하십시오.

document.ontouchmove = function(e){ return true; }

웹 사이트에서 .


답변

복원 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>

한 단계 더 나아가려면 트리거 버튼을 사용하여 이벤트를 트리거 할 수도 있습니다.


답변

function DoPrevent(e) {
  e.preventDefault();
  e.stopPropagation();
}

// Bind:
$(element).on('click', DoPrevent);

// UnBind:
$(element).off('click', DoPrevent);


답변

경우에 따라 * return false대신에 대신에 e.preventDefault()기본값을으로 복원 할 수 있습니다 return true.

* 이벤트 버블 링을 신경 쓰지 않고 e.stopPropagation()함께 사용하지 않을 때의 의미e.preventDefault()

유사한 질문 도 참조하십시오 (스택 오버플로에도 있음)

또는 확인란의 경우 다음과 같은 것을 가질 수 있습니다.

$(element).toggle(function(){
  $(":checkbox").attr('disabled', true);
  },
function(){
   $(":checkbox").removeAttr('disabled');
}) 


답변

다음을 수행하여 기본 조치 (HREF 추적 인 경우)를 복원 할 수 있습니다.

window.location = $(this).attr('href');


답변

링크 인 경우 $(this).unbind("click");링크 클릭을 다시 활성화하고 기본 동작이 복원됩니다.

이것이 어떻게 작동하는지 보여주는 데모 JS 바이올린 을 만들었습니다 .

다음은 JS 바이올린 코드입니다.

HTML :

<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<a href="http://jquery.com">Default click action is prevented, only on the third click it would be enabled</a>
<div id="log"></div>

자바 스크립트 :

<script>
var counter = 1;
$(document).ready(function(){
$( "a" ).click(function( event ) {
  event.preventDefault();

  $( "<div>" )
    .append( "default " + event.type + " prevented "+counter )
    .appendTo( "#log" );

    if(counter == 2)
    {
        $( "<div>" )
    .append( "now enable click" )
    .appendTo( "#log" );

    $(this).unbind("click");//-----this code unbinds the e.preventDefault() and restores the link clicking behavior
    }
    else
    {
        $( "<div>" )
    .append( "still disabled" )
    .appendTo( "#log" );
    }
    counter++;
});
});
</script>