为什么Jquery fadeOut()不起作用? Hide()可以

时间:2013-11-26 12:10:59

标签: jquery ajax hide fadeout

在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(),没有任何问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

看来这些电话是在快速连续发出的。这意味着fadeOut在前一个完成之前就会触发。

在尝试stop()

之前,您可能需要fadeOut()
$('#saveBtn').stop().fadeOut(250);

更多信息:http://api.jquery.com/stop/

答案 1 :(得分:1)

汉斯,

没有必要把你的

if(data['success'] === true) {

阻止你的代码,这是由你的成功处理:回调和你的if语句永远不会返回false。相反,你应该只有两个回调,如下所示:

success: function(data) {
    // My success code
},
error: function(data) {
    // My error code
}

但回到这个问题,简单地使用这样的隐藏是否有什么问题?

$('#saveBtn').hide('fade', 250);

在您观察到不良行为的这些时间内,您的服务器是否可能返回错误?它会阻止成功:到达回调和隐藏元素。