5

根据某人的建议,我$('body').on('touchstart', function(event){ event.preventDefault() })在我的移动 web 应用程序中添加了这一行,以禁用 iOS 中的本机应用程序弹跳。它非常适合禁用反弹,但在 DOM 的其他地方给了我一些奇怪的行为。

单击不起作用的事件等。我希望能更好地了解它的作用以及如何解决它在 DOM 中其他地方的影响。

谢谢!

编辑:

我有这两行:

  $('body').on('touchstart', function(e){ e.preventDefault() };
  $('#home').on('click', function(){ alert('home') };

如果我注释掉该preventDefault行,则该#home行有效。如果我将其留在#home 行中,则不会响应。#home只是嵌套在body.

知道什么可能导致这种行为吗?它是更大代码库的一部分,因此很难向您提供所有细节,但我什至不知道从哪里开始。

再次感谢!

4

1 回答 1

14

e.preventDefault()告诉浏览器如果此对象上的此事件有默认行为,则跳过该默认行为。

因此,例如,如果您有一个默认行为是提交表单的提交按钮,并且您在该按钮上有一个执行 a 的单击处理程序preventDefault(),那么当单击该按钮时浏览器将不会提交该表单。一个典型的使用可能是当表单没有验证,所以你向用户显示一条错误消息并且不希望表单被提交到服务器。

或者另一个例子。如果您为链接设置了单击处理程序并调用e.preventDefault()了该单击处理程序,则浏览器将不会处理链接上的单击,并且不会跟随链接中的 href。

于 2012-08-12T09:41:22.217 回答