плагин jquery изменяет $(‘#somediv’).foo на $.foo

#jquery

#jquery

Вопрос:

Я пишу плагин jquery, и он работает хорошо, но для него нужна внешняя-> внешняя оболочка #id (#somediv), т.е.:

 $('#somediv').foo({
     wrap : 'example',
     one  : 'red',
     two  : 'blue',
  });
 

HTML:

 <div id="somediv">
 <<div id="example">
<!-- Do stuff -->
 </div>
</div>
 

для меня внешняя-> внешняя оболочка (#somediv) не нужна, и я хотел бы иметь возможность устранить необходимость в этом и просто иметь одну оболочку, которая на самом деле является wrap : 'example', опцией, и вызывать параметры плагина следующим образом:

 $.foo({
     wrap : 'example',
     one  : 'red',
     two  : 'blue',
  });
 

HTML:

  <div id="example">
<!-- Do stuff -->
 </div>
 

итак, как сказано в названии, как я могу изменить change $('#somediv').foo на $.foo ?

Базовая компоновка плагина:

 ;(function($) {
    $.fn.foo = function(opts) {
        var defaults = {
         wrap : 'example',
         one  : 'red',
         two  : 'blue'
        };
        var opts = $.extend(defaults, opts);
        return this.each(function() {

//  Do stuff

        });
    };
})(jQuery);
 

Как обычно, вся помощь приветствуется и заранее благодарна.

Ответ №1:

Вместо того, чтобы назначать его для jQuery.fn назначения прямо jQuery .

Вы также можете использовать extend() like …

 $.extend({
   foo: function() { ... }
});
 

Комментарии:

1. Не совсем уверен, как tbh, я добавил базовый макет плагина, который я использую, чтобы вы могли видеть, что у меня есть на данный момент.