2012-01-14 3 views
0

мне было просто интересно, если следующий способом является хорошим выбором для построения плагиной JQuery, и если нет, которые являются лучшими практиками:Это хороший способ построить плагин?

$.fn.loginsys = function(options) { 

    var opts = $.extend({}, $.fn.loginsys.defaults, options); 

    return this.each(function() { 

     /* Code To Be Executed */ 

    }); 

} 

$.fn.loginsys.defaults = { 

    /* Some Options */ 

} 
+0

Вы хотите, чтобы пользователь имел возможность изменить параметры по умолчанию? – pimvdb

+0

Да, я этого хочу. – Roland

ответ

0

Я suggestm это с JQuery учебник плагина (но есть несколько способов) :

(function($) 
{ 
    var globalSettings= 
    { 
     width:400, 
     height:400 
    }; 

    var methods = 
    { 
     init : function(options) 
     { 
      return this.each(function() 
      { 
       var $this=$(this); 
       var settings=$.extend({}, globalSettings, options); 

       //your code 

      }); 
     }, 
     destroy : function() 
     { 
      return this.each(function() 
      { 

      }); 
     }, 
     option : function(option, value) 
     { 

      if(value!=null && value!=undefined) 
      { 
       return this.each(function(){ 
        var $this=$(this); 
        var curr_setts=$this.data('settings'); 
        curr_setts[option]=value; 
        $this.data('settings',curr_setts); 
       }); 
      } 
      else 
      { 
       var $this=$(this); 
       var curr_setts=$this.data('settings'); 
       return curr_setts[option]; 
      } 
     } 
    }; 

    $.fn.siter=function(method, options) 
    { 
     if(methods[method]) 
     { 
      return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 
     } 
     else if(typeof method === 'object' || !method) 
     { 
      return methods.init.apply(this, arguments); 
     } 
     else 
     { 
      $.error('Method ' + method + ' does not exist on jQuery'); 
     } 
    }; 

})(jQuery); 
+1

Открывающиеся скобки никогда не следует ставить на новые линии, чтобы избежать автоматической установки точки с запятой (-> преждевременное завершение многострочных операторов/деклараций). Плюс, это уродливо. – Flo

+0

Вы действительно старые, есть несколько способов написания кода, и это, на мой взгляд, является наиболее читаемым способом. он имеет также определенное имя – albanx

+0

У меня есть вопрос относительно этого способа написания плагина, я нашел в других плагинах что-то вроде этого 'jQuery.fn.reverse = Array.prototype.reverse;' в начале этого, что делает это означает? – Roland

1

Лучшие практики и все в сторону, есть причина для желания подвергать по умолчанию?

Если вы хотите, чтобы они были доступны для редактирования извне, вам может понадобиться вместо этого установить сеттер и сохранить их внутри закрытия $ .fn.loginsys =, чтобы убедиться, что они не могут быть воспроизведены таким образом, чтобы ваш плагин не работал.

См. Например jQuery ajaxSettings().

+0

Это кажется хорошей идеей, это хороший пример кода @albanx и может опции редактируются вне плагина? – Roland

0

Существует несколько полезных руководств по написанию плагинов jQuery, например http://coding.smashingmagazine.com/2011/10/11/essential-jquery-plugin-patterns/. Просто Google немного. Кроме того, посмотрите, как создаются другие плагины jQuery. Вот где вы можете узнать больше всего, о чем я думаю.

1

Я думаю, что вы просто не хватает обертку

(function($) { 

    // plugin code here 

})(jQuery); 

Но, есть много моделей плагинов там; вот bunch of templates доступны для скачивания.

+0

Спасибо, я рассмотрю все шаблоны :) – Roland

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