2

我对 jQuery 1.7 的最新on()功能有疑问。我正在将所有现有live()调用移至新on()函数。

过去,live()每当我创建一个新元素或从 AJAX 附加一些标记时,我都会使用它。

使用 jQuery 1.7 如果我附加通过 AJAX 返回的表单标记并尝试使用e.preventDefaultreturn false阻止它提交(例如验证它) - 表单将正常提交。

$(document).on('submit', 'form', function(e) {
    alert('You tried to submit the form');
    e.preventDefault();
});
4

2 回答 2

1

您的代码完全有效。

演示

如果您发布更多代码,我们可能会看看您是否还有其他问题


但是假设呈现页面时存在此表单,我会这样做:

$("form").on('submit', function(e) {
    alert('You tried to submit the form');
    e.preventDefault();
});

(我假设您的页面是使用已经存在的表单呈现的)

于 2012-01-09T16:48:49.513 回答
0

这已被确认为 1.7.1 中的 jQuery 错误,将在 1.7.2 中修复:http: //bugs.jquery.com/ticket/11145

我的原始代码是正确的(对于动态 DOM 元素)。Adam Rackis 的代码对于现有的 DOM 元素是正确的。

于 2012-01-13T10:24:41.860 回答