在提交表单之前,我有一个附加的功能来执行.这不是诀窍.
$('form').submit( function(event) { var formId = $(this).attr('id'); mySpecialFunction(formId); event.preventDefault(); setTimeout( function () { $(this).submit(); },300); });
这不明显.
解决方法
您需要在表单元素本身上触发事件,而不是在jQuery选择上. (实际上,你甚至没有选择表单元素 – 在setTimeout中,这是全局对象.)
$('form').submit( function(event) { var formId = this.id,form = this; mySpecialFunction(formId); event.preventDefault(); setTimeout( function () { form.submit(); },300); });
请注意,我也用this.id替换了您的低效$(this).attr(‘id’)调用.还要注意,您必须调用DOM表单元素的提交方法,而不是jQuery方法,以便不会触发jQuery事件处理程序,这将导致无限(且完全无效)的循环.