event.preventDefault()究竟是如何影响DOM的?

时间:2012-08-12 09:38:04

标签: javascript jquery html preventdefault

根据某人的建议,我在移动网络应用中添加了这一行$('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。

知道可能导致此行为的原因是什么?它是更大代码库的一部分所以它很难给你所有细节,但我甚至不知道从哪里开始。

再次感谢!

1 个答案:

答案 0 :(得分:13)

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

因此,例如,如果您有一个提交按钮,默认行为是提交表单,并且您在该按钮上有一个点击处理程序执行了preventDefault(),那么浏览器将不会在提交表单时提交单击按钮。这种情况的经典用法可能是表单未验证,因此您向用户显示错误消息,并且不希望将表单提交给服务器。

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