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

fan*_*ncy 5 html javascript jquery preventdefault

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

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

谢谢!

编辑:

我有这两行:

  $('body').on('touchstart', function(e){ e.preventDefault() };
  $('#home').on('click', function(){ alert('home') };
Run Code Online (Sandbox Code Playgroud)

如果我注释掉该preventDefault行,则该#home行有效.如果我把它留在#home行没有回应.#home只是一个div嵌套在body.

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

再次感谢!

jfr*_*d00 13

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

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

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