2013-02-25 26 views
2

有沒有辦法改變.load行爲,以便它加載任何div加載數據的spiner?擴展jquery load()函數來顯示div內的微調器

例如

<div class='content lside'></div> 
<script> 
    $(document).ajaxStart(function() { 
     $('body').append('<div class="notice" style="position:fixed;top:40%;left:30%;z-index:99999;"id="loadingspin">loading</div>');  }); 
    $(document).ajaxStop(function() { 
     $('#loadingspin').fadeOut().remove(); 
    }); 
    $('.content').load("<?=base_url();?>booking/<?=$day?>"); 
</script> 

我使用上面的腳本。

但我真正想要的是,當ajaxstart的$('。content')的內容被替換爲微調,直到它完成加載新的內容。

所以有沒有辦法擴展.load來做到這一點,通過它自我和取代ajaxstart, 所以在這裏凡$(div).load()被稱爲$(div).html('spiner');被激發。

如果沒有,有沒有辦法.ajaxstart可以引用內容將被加載到的div?

請注意:目前 IM使用.ajaxstart並在我所有的網頁來處理顯示一般紡紗我的頭腳本.ajaxstop,但我想更換/ DIV的具體解決方案,仍然工作擴展它在任何頁面上,無需進一步編輯每個Ajax請求。

謝謝

回答

2

可能是這樣的事情應該做的伎倆。覆蓋jQuery的原型並保存舊的函數。

(function(){ 
    var oldLoad = jQuery.fn.load; 
    jQuery.fn.load = function(url, data, complete){ 
     /* 
     * do your stuff 
     */ 
     oldLoad.call(jQuery, url, data, complete); 
    } 
})(); 

這改變了整個頁面的全局可用jQuery.load()方法,以便»你的東西«即使其他腳本調用該方法,最小的是功能的您重新定義被解析後,應執行。

+0

「call」的第一個參數不應該是'this'嗎? – Sam 2013-12-22 23:57:10