我有一个这样的页面:
<form class="ajax" method="post" action="add_item.php">
[text input] [submit button]
</form>
[list any items the user has in a div here called #items]
当用户点击提交按钮时,会调用这样的函数:
$("form.ajax").live('submit', function(event) {
params = $(this).serialize();
$.post($(this).attr("action"), params, function(data){
json = $.parseJSON(data);
// do stuff based on the json results
if(json.success.action == 'replace'){
$(json.success.container).html(json.success.message);
}
else{
$(json.success.container).prepend(json.success.message);
$(json.success.container).find(".item:first").slideDown();
}
});
event.returnValue = false;
return false;
});
这应该将add_item.php加载到#items div中,它在FF,Chrome,Safari中工作正常,而不是IE。在IE(测试7和8)中,当我单击“提交”时,它将页面重定向到add_item.php,而不是将其加载到#items div中。 我尝试添加event.preventDefault();到功能结束但不起作用。
有什么想法吗?
答案 0 :(得分:1)
哈!
在我发布之后立即找到了修复: 将函数移到$(document).ready下面并添加了event.stopPropagation();
答案 1 :(得分:0)
将方法“live”更改为“bind”