在Ajax结果之后,我正试图淡出一个html按钮。这大部分时间都有效,但有时按钮不会消失,我无法弄清楚原因。
$.ajax({
type: frm.attr('method'),
url: frm.attr('action')+'?time='+timestamp,
data: frm.serialize(),
dataType: 'json',
success: function (data) {
if(data['success'] === true){
hideSaveButton();
}
}
});
function hideSaveButton(){
$('#saveBtn').fadeOut(250);
}
访问hideSaveButton()函数似乎不是问题。这只是fadeOut()函数无法正常工作。我尝试用hide()替换fadeOut(),没有任何问题。
有什么想法吗?
答案 0 :(得分:4)
看来这些电话是在快速连续发出的。这意味着fadeOut
在前一个完成之前就会触发。
在尝试stop()
:
fadeOut()
$('#saveBtn').stop().fadeOut(250);
答案 1 :(得分:1)
汉斯,
没有必要把你的
if(data['success'] === true) {
阻止你的代码,这是由你的成功处理:回调和你的if语句永远不会返回false。相反,你应该只有两个回调,如下所示:
success: function(data) {
// My success code
},
error: function(data) {
// My error code
}
但回到这个问题,简单地使用这样的隐藏是否有什么问题?
$('#saveBtn').hide('fade', 250);
在您观察到不良行为的这些时间内,您的服务器是否可能返回错误?它会阻止成功:到达回调和隐藏元素。