Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   jQuery plugin (https://javascript.ru/forum/jquery/21909-jquery-plugin.html)

zebra 29.09.2011 04:06

jQuery plugin
 
Не могу понять как правильно создавать плагины. Нужно что-бы элемент мог перезаписывать данные и отдавать их. Делаю так :
var test_methods = {
    init : function() {
      return this.each(function() {
           this.aaa = 444444;
           this.bbb = 111111;
          
      });
    },
    get : function(name) {
        var val;
        this.each(function() {
            val = this[name];
        });
        return val;
    },
    set : function(name, value) {
         return this.each(function() {   
             this[name] = value;
         });
    }
};
$.fn.test = function(method) {
         if (test_methods[method]) {
              return test_methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
         } else if (typeof method === 'object' || ! method) {
              return test_methods.init.apply(this, arguments);
         } else {
              $.error('Method ' + method + ' does not exist on jQuery.test');
         }
};
 
$('#test1').test();
console.log( $('#test1').test('set', 'bbb', 88888).test('get', 'bbb') );

Вроде всё и работает, только для каждого метода надо писать return this.each(function(){}). Как ещё можно их создавать?!

bayrach 29.09.2011 10:51

Во-первых, посмотрите документацию с оф. сайта jquery. И еще, плагин не должен работать с переменными, функциями вне себя, как это делается в вашем случае с test_methods.

zebra 29.09.2011 13:16

Цитата:

Сообщение от bayrach (Сообщение 128577)
Во-первых, посмотрите документацию с оф. сайта jquery. И еще, плагин не должен работать с переменными, функциями вне себя, как это делается в вашем случае с test_methods.

Это и есть пример с оф сайта.
Цитата:

Сообщение от bayrach
работать с переменными, функциями вне себя

и почему же ?


Часовой пояс GMT +3, время: 15:47.