Skip to content

Latest commit

 

History

History
31 lines (25 loc) · 2.18 KB

File metadata and controls

31 lines (25 loc) · 2.18 KB

Data реестр

{% hint style="info" %} Если по какой-то причине вы ещё не знакомы с data(), советую перечитать главу Data-атрибуты и ознакомиться с официальной документацией. {% endhint %}

В разрезе разработки плагинов нам следует запомнить следующее — метод $.data() дает возможность вести реестр данных, который будут привязаны к какому-либо элементу. Таким образом, все данные плагинов лучше хранить в этом реестре. Т.е. если вам надо сохранить состояние плагина — используйте data(), если необходим кэш — используйте data(), если вам необходимо сохранить … ну, думаю, понятно. Приведу ещё примерчик, связанный с инициализацией:

function() { // функция init
    var init = $(this).data('mySimplePlugin');
    if (init) {
        return this;
    } else {
        $(this).data('mySimplePlugin', true);
        return this.on('click.mySimplePlugin', function(){
            $(this).css('color', options.color);
        });
    }
}

{% hint style="danger" %} Напоминаю, что методjQuery.data() не манипулирует атрибутами HTML, а работает со своим реестром, и лишь при отсутствии данных в своём реестре пытается заполучить атрибут data-*. {% endhint %}

{% embed url="https://anton.shevchuk.name/book/code/data.html" %}

{% hint style="info" %} Надо бы не забыть рассказать про obj[jQuery.expando] = uuid и jQuery._data(element), а так же про утечки памяти, но наверное не сегодня. {% endhint %}