2012-01-10 124 views
1

我正在尋找一種方法來擴展現有的Jquery功能,給它更多的選項/參數。Jquery擴展現有功能

我想要使用的是$ .ajax,但這可能適用於任何jquery函數。

我希望能夠調用這樣的功能:

$.adv_ajax() 

這將是$就功能的擴展版本類似如下:

$.adv_ajax({ 
    custom_parameter: "abc", //my custom one 
    url: "test.html", 
    context: document.body, 
    success: function(){ 
    $(this).addClass("done"); 
    } 
}); 
+0

這個自定義參數會做什麼?難道你不能把正在進行的調用包裝到$ .ajax()嗎? – nsanders 2012-01-10 05:22:22

回答

3

那麼然後就附上你的函數jQuery對象:

$.adv_ajax = function(options) { 
    // Do stuff like change some options and then call the original 
    return $.ajax(options); 
} 
8

事情是這樣的:

 

(function($) 
{ 
    // maintain a to the existing function 
    var oldAjax = $.ajax; 
    // ...before overwriting the jQuery extension point 
    $.fn.ajax = function() 
    { 
     // original behavior - use function.apply to preserve context 
     var ret = oldAjax.apply(this, arguments); 


     // preserve return value (probably the jQuery object...) 
     return ret; 
    }; 
})(jQuery); 

 
+0

+1顯示如何更改現有的功能和良好的jQuery編碼實踐。但它可能是$ .ajax而不是$ .fn.ajax,應該更改。對於這個問題,也可能是一個矯枉過正的行爲,因爲op想要用不同的名字創建一個函數。 – Daff 2012-01-10 05:27:29

+0

我想擴展它,所以我正在尋找最好的方法來做到這一點。但是,我不想以任何方式覆蓋.ajax只是擴展它。 – 2012-01-10 05:39:22

+1

http://stackoverflow.com/a/5007327/1992799 – 2014-03-07 21:36:16