Jquery ajaxStart doesnt get triggered

前端 未结 3 666
不思量自难忘°
不思量自难忘° 2020-12-09 17:21

This code

$(\"#loading\").ajaxStart(function() {
        alert(\"start\");
        $(this).show();
    });

in my mark-up

&l         


        
3条回答
  •  无人及你
    2020-12-09 18:11

    It's not getting triggered because your handler for .ajaxStart() isn't registered until after the ajax request is already going (past when it would have been called). The .ajaxStop() is registered after as well, but before the request finishes, so when it comes back it is hooked up to run.

    To fix this, move this before your first $.ajax() call:

    $("#loading").ajaxStart(function() {
      $(this).show();
    }).ajaxStop(function() {
      $(this).hide();
      $("#st-tree-container").show();
    });
    


    UPDATE: Starting jQuery 1.9, AJAX events should be attached to document only. http://jquery.com/upgrade-guide/1.9/#ajax-events-should-be-attached-to-document

    $(document).ajaxStart(function() {
      $("#loading").show();
    });
    
    $(document).ajaxStop(function() {
      $("#loading").hide();
      $("#st-tree-container").show();
    });
    

提交回复
热议问题