JQuery отправить сообщение плагину - PullRequest
1 голос
/ 03 августа 2010

У меня есть собственный плагин с конструктором, подобным этому:

 (function($){

    $.fn.extend({ 

        myplugin: function(options) {
  [..]

В плагине у меня есть куча других функций.Теперь я присоединяю свой плагин к dom-элементу:

$('myelement').myplugin()

и после этого хочу отправить плагину сообщение из упаковочного документа.По сути, я хочу вызвать внутреннюю функцию с пользовательскими параметрами извне.Как мне этого добиться?

Большое спасибо.

Ответы [ 3 ]

1 голос
/ 03 августа 2010

Я придерживаюсь следующего шаблона при разработке плагинов jQuery. Это весьма полезно:

(function($)   {
   $.fn.myWidget = function(options)  {
      var defaults = {
         // default options
      };
      // these are our final options
      var opts = $.extend(defaults, options);

      // private functions
      var myFunc = function(param) {
      };

      // our widget object
      var widget = {
         functionA: function(strMsg)  {
            // do something important or call internal function myFunc
         },


         functionB: function(idx)   {
            // do something important
         }
      };
      // return the widget object 
      return widget; // THIS WILL HELP YOU CALL FUNCTIONS ON YOUR WIDGET
   };
})(jQuery);

var w = $("#myDiv").myWidget();
w.functionA("Hell(o)");

Еще один способ сделать это:

(function($)   {
   $.fn.myWidget = function(options)  {
      var defaults = {
         // default options
      };
      // these are our final options
      var opts = $.extend(defaults, options);

      // private functions
      var myFunc = function(param) {
      };

      this.functionA = function(strMsg) {
      };

      this.functionB = function(param) {
      };

      return this;

   };
})(jQuery);

var w = $("#myDiv").myWidget();
w.functionA("Hell(o)");
0 голосов
/ 03 августа 2010

Наиболее распространенный способ связи между плагинами и остальными вашими скриптами - через объект параметров.Пример:

$.fn.extend({ 
    myplugin: function(options) {
        $.extend({
            hello: function(){
                return 'yo'; // default message
            }
        },options);
        alert(options.hello());
    }
});

$('#elem').myplugin({
    hello: function() {
        return 'hi';
    }
});

Вы также можете создать статические методы в том же пространстве имен:

$.fn.extend({ 
    myplugin: function() {
        var hello = function(msg) {
            msg = msg || 'yo'; // default message
            alert(msg);
        };
        $.myplugin = {
            hello: hello
        };
    };
});

$('#elem').myplugin();
$.myplugin.hello('hi')
0 голосов
/ 03 августа 2010

Следуйте инструкциям и держите I в части с раскрытием вторичных функций.

http://www.learningjquery.com/2007/10/a-plugin-development-pattern

Например, реализация нашего плагина может определять функцию под названием "format ", который форматирует подсветку текста.

Если вы используете эту вторичную функцию (здесь" format ") для вызова вашего плагина, вам будет хорошо идти.

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