(在 Firefox 和 IE9 中不起作用。在 Chrome 中,这有效)
如果我删除 ajax,隐藏/显示 JQuery 就可以工作。有什么解决办法吗?
<form id="ppform" action="blah.asp" method="post">
<div id="saleload">Blah</div>
<button id="sendbutton">Send</button>
</form>
$(document).ready(function(){
$('#saleload').hide();
$('#sendbutton').click(function() {
$('#saleload').show();
$.ajax({
type: "POST",
url: /blah/blah.asp,
data: reqBody,
dataType: "json",
success:function(data,textStatus){
if (data.redirect) {
window.location.href = data.redirect;
}else{
$("#ppform").replaceWith(data.form);
}
}
});
});
});
最佳答案
这一行:
$("#ppform").replaceWith(data.form);
正在用 Ajax 请求的响应替换整个表单内容。这意味着您设置的点击处理程序也将消失,因为 #sendbutton
将消失。即使 data.form
中有另一个具有相同 ID 的按钮,它也不起作用。您必须改用事件委托(delegate):
$(document).ready(function(){
$('#saleload').hide();
$(document).on('click', '#sendbutton', function(){
$('#saleload').show();
$.ajax({
type: "POST",
url: "/blah/blah.asp",
data: reqBody,
dataType: "json",
success:function(data,textStatus){
if (data.redirect) {
window.location.href = data.redirect;
} else {
$("#ppform").replaceWith(data.form);
}
}
});
});
});
另外:您似乎向服务器发布了一个 undefined variable reqBody
,并且,正如上面 lonesomeday 所说,您在 URL 周围缺少引号。
关于javascript - $.ajax 干扰此脚本中的 .hide() 和 .show() Jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10711415/