在提交表单之前,我还有一个额外的功能要执行.这不是诀窍.
$('form').submit( function(event) {
var formId = $(this).attr('id');
mySpecialFunction(formId);
event.preventDefault();
setTimeout( function () {
$(this).submit();
}, 300);
});
Run Code Online (Sandbox Code Playgroud)
这显然不起作用.
lon*_*day 34
您需要在表单元素本身上触发事件,而不是在jQuery选择上触发事件.(事实上,你甚至没有选择表单元素 - 在里面setTimeout,this是全局对象.)
缓存对form(this)的引用并调用其submit方法:
$('form').submit( function(event) {
var formId = this.id,
form = this;
mySpecialFunction(formId);
event.preventDefault();
setTimeout( function () {
form.submit();
}, 300);
});
Run Code Online (Sandbox Code Playgroud)
请注意,我还用你的低效$(this).attr('id')电话取代了this.id.另请注意,您必须调用DOM表单元素的提交方法,而不是jQuery方法,以便不触发jQuery事件处理程序,这将导致无限(并且完全无效)循环.