【发布时间】:2014-10-12 03:21:30
【问题描述】:
假设我为表单创建了以下处理程序(回调):
$('form').submit(function (event) {
event.preventDefault();
alert('form submitted');
});
为什么调用$('form').get(0).submit 不调用提交处理程序?表单直接被提交。
【问题讨论】:
假设我为表单创建了以下处理程序(回调):
$('form').submit(function (event) {
event.preventDefault();
alert('form submitted');
});
为什么调用$('form').get(0).submit 不调用提交处理程序?表单直接被提交。
【问题讨论】:
.get(0) 返回本机 js DOM 元素(与 $('form')[0] 相同),然后您将触发
直接提交事件。
如果您尝试获取第一个元素,请使用 .eq(0) 并使用 .submit() 触发提交 jQuery 样式。
总结:
$('selector')[0] ~ 返回原生 js DOM 元素.get(0) ~ 同 [0]。.eq(0) ~ 将第一个元素作为 jQuery 对象返回。更多:
$('form.selector').submit(function (e) { });
$('form.selector').submit(); 或 $('form.selector').trigger('submit');
$('form').eq(0).submit();
演示:jsFiddle
我希望它是你需要的。
演示 jQuery:
$('form').submit(function (event) {
event.preventDefault(); // Will prevent the native handler from firing.
alert('form submitted :' + $(this).attr("id"));
});
//change the `.eq(index)` to 1 to trigger the submit on the second form:
$('form').eq(0).submit(); // Same as: $('form').eq(0).trigger("submit");
演示 HTML:
<form id="form1"></form>
<form id="form2"></form>
【讨论】:
event.preventDefault(); 这将阻止调用实际事件.