Обрабатывать события в плагине jQuery - PullRequest
2 голосов
/ 12 января 2011

Я пишу плагин jQuery, но застрял при обработке событий.

Например, я хочу, чтобы пользователь мог указать функцию для обработки моего события сохранения

Он бы настроил это так

$(".foo").bar({
  save: function (x,y){
     alert("whatever");
  })
});

Но я не знаю, как вызвать это из моего плагина и как передавать аргументы ...

спасибо за чтение!

Ответы [ 3 ]

2 голосов
/ 12 января 2011

Ваш код плагина будет выглядеть примерно так:

$.fn.bar = function(options) {
    options = $.extend({}, {/*your default options*/}, options);
});

Когда вы хотите вызвать предоставленную пользователем функцию, вызовите ее:

options.save(x, y); // or whatever x and y are

Если вы хотите вызватьДля того, чтобы переменная this имела полезное значение в этой функции, используйте call:

options.save.call(somevar, x, y);

Это устанавливает this в вашем обратном вызове на somevar.Если, например, вы хотите, чтобы в обратном вызове было выбрано bar, вы можете сделать options.save.call(this, x y);

2 голосов
/ 12 января 2011
(function($) {
    $.fn.bar = function( opts ) {
          // reference the function from the options passed
        var theFunc = opts.save;
          // call the function
        theFunc();
         // or call the function from the context of the jQuery object
         //    and pass it the proper arguments
        theFunc.call( this, 'someX', 'someY' );
    };
})(jQuery);
1 голос
/ 13 января 2011

Попробуйте сделать что-то вроде:

(function($) {
    $.fn.bar = function(options) {

        // Extend default config with config object passed at invocation time
        options = $.extend({
             ...

        }, options);

        // Check that Callback function has been passed
        if (options.save) {

             var newVar = ...;

             // Delegate the function to some variable (it will act as *this* in the called 
             // function). You can pass few arguments as well
             options.save.call(newVar, arg1, arg2)
        } 

    };
})(jQuery);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...