//解决方案:我只是简单地替换了四个问题,如建议的批准答案和不引人注目的ajax插件已启动并再次使用jquery 1.9.0
更新//观察底部标记答案的评论,这是解决此问题的最佳方法。
//原帖: 我升级到jQuery 1.9.0然后不引人注意的ajax插件因为他们弃用了live方法而失败了。我试图像这样替换它,因为升级修复了我的另一个错误。但是,它不起作用。我只是简单地用这样替换了现场:
$("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())
});
});
答案 0 :(得分:12)
使用live
(委托)的on
的等效项为:
$(document).on("click","a[data-ajax=true]", function (evt) {...});
您可以在此处找到jquery的.on()
方法文档:
>> http://api.jquery.com/on/ <<
.on()方法将事件处理程序附加到当前选定的集合 jQuery对象中的元素。从jQuery 1.7开始,使用.on()方法 提供附加事件处理程序所需的所有功能。对于 帮助转换旧的jQuery事件方法,请参阅 .bind(), .delegate()和 .live()。
要删除与.on()绑定的事件,请参阅 的 .off()即可。附加仅运行一次的事件,然后删除 本身,请参阅 .one()