2012-01-10 3 views
1

Я ищу способ расширить существующую функцию Jquery, чтобы предоставить ей больше параметров/параметров.JQuery Extend Existing Function

Тот, который я хочу использовать, равен $ .ajax, но это может относиться к любой функции jquery.

Я хочу, чтобы иметь возможность вызвать функцию следующим образом:

$.adv_ajax() 

Какой бы расширенная версия функции $ .ajax, как выглядит следующим образом:

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

Что сделал бы этот пользовательский параметр? Разве вы не можете просто перевести звонок в $ .ajax()? – nsanders

ответ

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

+0

Я хочу расширить его, поэтому я ищу лучший способ сделать это. Однако я не хочу перематывать .ajax, так или иначе просто расширять его. –

+1

http://stackoverflow.com/a/5007327/1992799 –

Смежные вопросы