Jquery расширяет существующую функцию - PullRequest
1 голос
/ 10 января 2012

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

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

Я хочу иметь возможность вызывать такую ​​функцию:

$.adv_ajax()

Какой будет расширенная версия функции $ .ajax, например:

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

Ответы [ 2 ]

8 голосов
/ 10 января 2012

Примерно так:


(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);


3 голосов
/ 10 января 2012

Ну, тогда просто присоедините вашу функцию к объекту jQuery:

$.adv_ajax = function(options) {
    // Do stuff like change some options and then call the original
    return $.ajax(options);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...