preventDefault()不适用于委托目标?

时间:2013-03-12 13:56:17

标签: jquery

我有一个提交表单的按钮

按钮已在页面上。

因此,如果我想阻止提交,我可以这样做:

$(".myBtn").on('click',function (e){ e.preventDefault();.....});

但如果将来要注入按钮,我可以这样做:

$("body").on('click',".myBtn",function (e){ e.preventDefault();.....});

但它不起作用,表格提交。

如果处理程序没有直接附加到元素本身而是附加到委托目标,我怎样才能实现我的目标?

1 个答案:

答案 0 :(得分:1)

您绝不应将点击处理程序附加到提交按钮,以防止提交表单。始终绑定表单的“提交”事件 - 如果用户按Enter键提交表单而不是单击,该怎么办?

$(document).on('submit','#your-form',function(e) {
 e.preventDefault();
});

至于回答你的直接问题,你的代码应该可以正常工作。确保您的按钮具有正确的类名,并确保在单击可能导致e.preventDefault()被忽略的按钮之前或之后页面上没有出现JS错误。