2017-08-02 137 views
1

下面的代码在Firefox中执行得很好(即class =“ajax-loader”的div分别显示和隐藏start和stop事件),但对于一些原因,不在IE或Chrome中。 (注意,使用jQuery版本2.2)ajaxStart,ajaxStop只在firefox中正确触发,不是铬或者

$(document).ajaxStart(
    function() { 
     $('.ajax-loader').css("visibility", "visible"); 
    } 
).ajaxStop(
    function() { 
     $('.ajax-loader').css("visibility", "hidden"); 
    } 
); 

有什么想法吗?

更新 好吧,事件似乎在IE和Chrome中发作。我只是暂时禁用.ajaxStop段内的代码。区别在于Firefox会立即显示加载元素,而在Chrome和IE中,.ajaxStart事件在ajax调用回来之前似乎不会被触发。

+0

我的回答对你有帮助吗? –

+0

我希望你没有在电脑旁等我试试Chirag? ;) – mattpm

回答

1

我建议你需要尝试这样。

$(document).ready(function() { 
 
    $("#click").on('click', function() { 
 
    $('.ajax-loader').css("visibility", "visible"); 
 
    $.ajax({ 
 
     url: 'yourURL', 
 
     success:function(){ 
 
     $('.ajax-loader').css("visibility", "hidden"); 
 
     } 
 
    }); 
 
    }); 
 

 
});
.ajax-loader{ 
 
visibility:hidden; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id='click'>Click</button> 
 
<div class="ajax-loader">Loading</div>

与定义该按ajaxstart doc

$.ajaxSetup({'global':true}); 
1

试用试用下面solution.This的解决方案是为我工作。

$(document).on({ 
      ajaxStart: function() { 
       $('.ajax-loader').removeClass("hide"); 
      }, 
      ajaxStop: function() { 
       $('.ajax-loader').addClass("hide"); 
      } 
     }); 

CSS类

.hide{ 
    display:none; 
} 

希望这个解决方案是为你工作。让我知道你是否需要进一步的帮助。

相关问题