我有以下 jQuery 代码来拦截表单提交并将其转换为 Ajax 调用:
$("form.section_change").off("submit").on("submit", function () {
var section = $(this).attr("data-section");
var initializer = $(this).attr("data-initfunc");
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
error: function (a, b) {
debugger;
},
success: function (result) {
$("div#" + section).html(result);
bindExtenders();
if (initializer != null) {
var func = window[initializer];
func();
}
}
});
return false;
});
从概念上讲,发生的事情是 ajax 调用返回 html,该 html 用于替换表单标记内的 div。bindExtenders() 函数调用“重新绑定”jQuery 绑定,包括此代码段描述的绑定。初始化函数是运行指定 javascript 函数的可选项目。
当我第一次在页面上提交表单时,回调只被调用一次,正如预期的那样。但是,在随后的提交中,回调被多次调用(通常是两次,但有时不止一次)。
我想弄清楚如何做到这一点,所以回调只被调用一次。