我有以下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,用于替换form标签内的div。 bindExtenders()函数调用“重新绑定”jQuery绑定,包括此片段描述的绑定。初始化函数是一个可选项,它运行指定的javascript函数。
当我第一次在页面上提交表单时,回调只按预期调用一次。但是,在随后的提交中,回调被多次调用(通常是两次,但有时会多于此次)。
我想知道如何执行此操作,以便只回调一次回调。
答案 0 :(得分:0)
您可以这样做:
$('body').on('submit', 'form.section_change', function() {
// ...
});
这样你就不需要重新绑定了。见这里:jQuery