
使用 preventDefault() 时,若事件监听器在动态注入的 HTML 上绑定过早(DOM 尚未就绪),会导致绑定失败、表单仍按默认方式提交,从而在 URL 中插入 ? 并触发页面跳转。核心在于确保事件委托或绑定时机正确。
使用 `preventdefault()` 时,若事件监听器在动态注入的 html 上绑定过早(dom 尚未就绪),会导致绑定失败、表单仍按默认方式提交,从而在 url 中插入 `?` 并触发页面跳转。核心在于确保事件委托或绑定时机正确。
你遇到的问题——点击提交按钮后 URL 变为 www.webpage.com/?#create,且控制台未输出 "hi"——并非 preventDefault() 失效,而是事件监听器根本未成功绑定。
原因在于:你的表单是通过 $.get() 异步加载到 #app 容器中的(即“动态注入”),而 $("#create-submit").click(...) 在 $(document).ready() 中执行时,该按钮 DOM 节点尚不存在(此时 #app 内容为空)。因此,jQuery 找不到 #create-submit 元素,事件监听器注册失败;后续点击实际触发了










