jQuery我应该使用多个ajaxStart / ajaxStop处理

也许没有区别,但要么比其他方式更好(或者可能是比两者更好的神秘’第三’方式!)……


第一:

var startTime; $(document).ready(function() { $("#lbl_ajaxInProgress").ajaxStart(function() { // store the current date/time... startTime = new Date(); // update labels $(this).text('Yes'); $("#lbl_ajaxCallTime").text("-"); }); $("#lbl_ajaxInProgress").ajaxStop(function() { // update labels $(this).text('No'); $("#lbl_ajaxCallTime").text(myFunctionThatCalculatesTime(startTime)); }); }); 

第二:

 var startTime; $(document).ready(function() { $("#lbl_ajaxInProgress").ajaxStart(function() { // update labels $(this).text('Yes'); }); $("#lbl_ajaxInProgress").ajaxStop(function() { // update labels $(this).text('No'); }); $("#lbl_ajaxCallTime").ajaxStart(function() { // store the current date/time... startTime = new Date(); // update labels $(this).text("-"); }); $("#lbl_ajaxCallTime").ajaxStop(function() { // update labels $(this).text(myFunctionThatCalculatesTime(startTime)); }); }); 

一个有趣的事实是ajaxStart等实际上只是jQuery事件。 例如:

 $("#lbl_ajaxInProgress").ajaxStart(function() { // update labels $(this).text('Yes'); }); 

相当于:

 $("#lbl_ajaxInProgress").bind("ajaxStart", function() { // update labels $(this).text('Yes'); }); 

这意味着您还可以将命名空间附加到ajaxStart / ajaxStop等。这也意味着您可以执行以下操作:

 $("#lbl_ajaxInProgress").unbind("ajaxStart ajaxStop"); 

你也可以这样做:

 $("#lbl_ajaxInProgress").bind("ajaxStart.label", function() { // update labels $(this).text('Yes'); }); $("#lbl_ajaxInProgress").bind("ajaxStop.label", function() { // update labels $(this).text('No'); }); 

然后:

 $("#lbl_ajaxInProgress").unbind(".label"); 

很酷,对吧?

以这种方式使用Ajax Call ….

    Shouting Code