根据某人的建议,我在移动网络应用中添加了这一行$('body').on('touchstart', function(event){ event.preventDefault() })
,以禁用iOS中的本机应用程序弹跳。它非常适合禁用反弹但在DOM的其他地方给我一些奇怪的行为。
点击不起作用的事件等。我希望能更好地理解它的作用以及如何解决它在DOM中其他地方的影响。
谢谢!
编辑:
我有这两行:
$('body').on('touchstart', function(e){ e.preventDefault() };
$('#home').on('click', function(){ alert('home') };
如果我注释掉preventDefault
行,则#home
行有效。如果我把它留在#home行没有回应。 #home
只是body
中的一个div。
知道可能导致此行为的原因是什么?它是更大代码库的一部分所以它很难给你所有细节,但我甚至不知道从哪里开始。
再次感谢!
答案 0 :(得分:13)
e.preventDefault()
告诉浏览器,如果此对象上存在此事件的默认行为,则跳过该默认行为。
因此,例如,如果您有一个提交按钮,默认行为是提交表单,并且您在该按钮上有一个点击处理程序执行了preventDefault()
,那么浏览器将不会在提交表单时提交单击按钮。这种情况的经典用法可能是表单未验证,因此您向用户显示错误消息,并且不希望将表单提交给服务器。
或者另一个例子。如果您为链接设置了单击处理程序,并在该单击处理程序中调用e.preventDefault()
,则浏览器将不会处理链接上的单击,也不会跟随链接中的href。