Safari 5.1.10中jQuery hide / show的问题

时间:2014-03-24 05:27:45

标签: jquery safari hide show

我在下面的问题中看到过一些类似的帖子,但没有一个能够发挥作用。

我有一个'更新'我想在执行ajax查询时隐藏的按钮,并用加载符号替换。成功返回ajax后,我希望恢复正常状态(即按钮显示和符号隐藏)。

这适用于Safari 5.1.10以外的所有浏览器。在Safari中,围绕jQuery hide / shows的所有其他代码执行正常。我也能够隐藏/显示其他元素(在应用程序的其他阶段),如果我将相同的隐藏/显示请求放入onload例程,那么它们工作正常。我很难过。

HTML:

<input id='update' type='button' value='update scores' />
<img id='update_load' src='../images/ajax-load-bar.gif' style='display:none; position:relative; left:35px; top:0px;' />

JQUERY:

function update_ES() {
  $("#update").hide();
  $("#update_load").show();
  ....

我可以在Mac OS X(10.6.8)上的Safari 5.1.10以及运行最新iOS 7.1的iPhone上验证这种功能缺乏。我在Windows上的Safari中没有经过同样的验证,但预计会是这样。

详细说明......我使用以下内容将点击功能分配给&#39;更新&#39;:

$('#update').click(function() {
    $("#update").hide();
    $("#update_load").show();
    switch(MC_action) {
        case "team":
            update_TS();
            break;
        case "score": case "admin":
            update_ES();
            break;
    }   
});

update_TS和update_ES都非常相似,所以我提供update_ES作为两者的指示:

function update_ES() {
//hide button (temporarily) and show loading bar
$("#update").hide();
$("#update_load").show();

scores = gatherScores();
$.ajax({
    type: "post",
    url: url, 
    async: false,
    data: { scores: scores, MC_action: MC_action, match_id: match_id },
    dataType: "json",
    success: function(json) { 
               //do some basic stuff here to process the return

               //hide loading bar, show and disable update button
       $("#update_load").hide();
       $("#update").show();
    },
    error: function (xhr, ajaxOptions, thrownError) {
        console.log(xhr.status);
        console.log(thrownError);
    }
})

}

1 个答案:

答案 0 :(得分:0)

尝试更改

$('#update').click(function() {
...
}

$('#update').on('click', function() {
...
}