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>