可能是重复问题:
jQuery 1.7 - 将 live() 转换为 on()
//解决方案:像批准的答案建议的那样,我简单地替换了四个出现的位置,无侵入式 ajax 插件就可以在 jquery 1.9.0 上正常工作了。
更新 //请注意底部标记的答案的评论,这是解决此问题的最佳方法。
//原始帖子: 我升级到 jQuery 1.9.0,但是无侵入式 ajax 插件崩溃了,因为它们已弃用 live 方法。我尝试像这样替换它,因为升级对我修复了另一个错误。但是,它不起作用。我只是将 live 替换为 on,就像这样:
$("a[data-ajax=true]").on("click", function (evt) {
evt.preventDefault();
asyncRequest(this, {
url: this.href,
type: "GET",
data: []
});
});
$("form[data-ajax=true] input[type=image]").on("click", function (evt) {
var name = evt.target.name,
$target = $(evt.target),
form = $target.parents("form")[0],
offset = $target.offset();
$(form).data(data_click, [
{ name: name + ".x", value: Math.round(evt.pageX - offset.left) },
{ name: name + ".y", value: Math.round(evt.pageY - offset.top) }
]);
setTimeout(function () {
$(form).removeData(data_click);
}, 0);
});
$("form[data-ajax=true] :submit").on("click", function (evt) {
var name = evt.target.name,
form = $(evt.target).parents("form")[0];
$(form).data(data_click, name ? [{ name: name, value: evt.target.value }] : []);
setTimeout(function () {
$(form).removeData(data_click);
}, 0);
});
$("form[data-ajax=true]").on("submit", function (evt) {
var clickInfo = $(this).data(data_click) || [];
evt.preventDefault();
if (!validate(this)) {
return;
}
asyncRequest(this, {
url: this.action,
type: this.method || "GET",
data: clickInfo.concat($(this).serializeArray())
});
});
.live
转换为.on
的好例子。 - Kevin B.on()
),而不是手动修改它。 - JLRishe