jquery 切换默认调用 preventDefault(),所以默认值不起作用。你不能点击一个复选框,你不能点击一个链接等等
是否可以恢复默认处理程序?
jquery 切换默认调用 preventDefault(),所以默认值不起作用。你不能点击一个复选框,你不能点击一个链接等等
是否可以恢复默认处理程序?
就我而言:
$('#some_link').click(function(event){
event.preventDefault();
});
$('#some_link').unbind('click');
作为恢复默认操作的唯一方法。
它相当简单
让我们假设你做类似的事情
document.ontouchmove = function(e){ e.preventDefault(); }
现在要将其恢复到原始状态,请执行以下操作...
document.ontouchmove = function(e){ return true; }
从这个网站。
恢复 a 是不可能的,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');
})