我在IE8下遇到了jquery ajax的问题。我有一个表单,它在基本级别显示一些项目列表,每个项目都有编辑和删除按钮。该列表以及这两个按钮是通过jquery ajax调用加载的。虽然它在Firefox和Chrome上运行良好,但在IE8上它不会触发编辑或删除按钮后的功能。
所以基本上,在基页上,jquery工作并加载列表。在该列表中,jQuery不起作用,因为它不会触发编辑或删除函数
我对模态窗口调用有类似的问题。 IE8能够打开模态窗口(内容加载了jquery ajax)但不会触发模态内容中的任何函数
简单电话的示例
$('#form-modal').load('/form/' + path + '?id=' + id).modal();
这适用于基本页面上的IE8,但在ajax加载的内容中触发时不会
所有js脚本定义都在主基页的<head>
中加载。我尝试在ajax加载的文件头中添加定义,但没有帮助,所以它必须是其他东西
有什么想法吗?如果您需要更多细节,请高兴地提供
让我告诉你最简单的例子。列表中装有ajax的每个项目都有一个“删除”按钮。
<a href="#" onclick="deleteItem('itemId')">Remove</a>
DeleteItem定义位于外部lib.js文件中
function deleteItem(id){
$.ajax({
type: "POST",
url: "/ajax/deleteitem.php",
data: "id=" + id,
success: function(msg){
loadItemsList();
}
});
}
这就是它...这根本不适用于IE8 ......没有任何反应,甚至没有javascript错误。同样的事情在Firefox和Chrome上没有问题
答案 0 :(得分:2)
如果你显示那些按钮的事件处理程序会很好,因为如果你使用bind();例如,它在dom准备就绪时加载,并进行ajax调用。这意味着当调用bind来绑定按钮时,通过ajax调用加载的dom元素不存在。
解决方法是使用live();
$(".button").live("click", function () {
// do stuff
});
我不知道你正在使用什么事件活页夹,但如果你使用的不是现场活动,你可以试试看它应该有效。
修改强>
首先在警报(id)上阅读我的评论,如果您的功能在IE8中根本没有运行,请尝试这样做。给link元素添加id,就像这样
<a id="item_10" href="#">Remove</a>
然后在你的javascript中的某个地方
$("document").ready( function () {
$("a").live("click", deleteItem);
});
function deleteItem (event) {
event.preventDefault();
var id;
id = $(this).attr("id").replace("item_", "");
//this will now provide you with the current id
console.log(id);
your ajax-stuff here..
}
这应该在IE8中工作,没问题。您可能希望为click事件指定选择器,方法是为所有删除链接提供某些类或其他内容。