собственные переменные для каждого элемента (плагин jQuery) - PullRequest
0 голосов
/ 24 декабря 2010

Я пытаюсь понять, как работают плагины jQuery.Это мой первый тестовый плагин (он ничего не делает :))

(function($)
{
    var methods =
    {
        init : function(options)
        {
            if (options)  $.extend(settings, options);
            myElement = $(this);
            return myElement;
        },
        getInfo : function()
        {
            console.log('Info = ' + myElement.attr('id') + ' [' + settings.itemName + ']');
        }
    };

    var settings = {'itemName' : 'item' };
    var myElement = null;


    $.fn.myTest = function(method)
    {
        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.myTag');
        }
    };
})(jQuery);

На моей странице HTML я называю это:

$(document).ready(function()
{
    t = $('#list').myTest({itemName:'First'});
    t.myTest('getInfo');
    t2 = $('#l2').myTest({itemName:'Hello World'});

    t2.myTest('getInfo');
    t.myTest('getInfo');
});

И я вижу, что переменная этого плагина 'myElement'изменено:

Info = list [First] - OK
Info = l2 [Hello World] - OK
Info = l2 [Hello World] - Why???

Что мне нужно написать, чтобы переменная плагина 'myElement' отличалась для каждого элемента?Благодаря.

1 Ответ

1 голос
/ 24 декабря 2010

Я решил. Спасибо.

    data = $this.data('test');

    if (!data)
    {
        $(this).data('test',
        {
            element : $this,
            settings : settings
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...