也许没有什么区别,但是要比其他方式好(或者也许是比两者都更神秘的“第三”方式)!)
第一:
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");
很酷啊