Page 94 - jQuery для начинающих
P. 94

Data


             Если по какой-то причине вы еще не знакомы с data() — то советую прочитать и усвоить
             незамедлительно. Если же в двух словах — это реестр данных, и все данные привязанные к

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


                    function() {  // функция init

                           var init = $(this).data('mySimplePlugin');
                           if (init) {
                                  return this;

                           } else {
                                  $(this).data('mySimplePlugin', true);

                                  return this.bind('click.mySimplePlugin', function(){
                                         $(this).css('color', options.color);
                                  });

                           }
                    }


             По стечению обстоятельств, в HTML5 появились data-атрибуты, и для доступа к ним jQuery
             использует  тот  же  метод  data(),  но  вот  дела,  jQuery.data()  –  не  манипулирует

             атрибутами  HTML,  а  работает  со  своим  реестром,  и  лишь  при  отсутствии  там  данных
             пытается заполучить атрибут data-*, не попадитесь:


                    <div id="my" data-foo="bar"></div>
                           $("#my").data("foo");      // >> bar
                           $("#my").attr("data-foo"); // >> bar


                    $("#my").data("foo", "xyz");

                           $("#my").data("foo");      // >> xyz
                           $("#my").attr("data-foo"); // >> bar


                    $("#my").attr("data-foo", "def");
                           $("#my").data("foo");      // >> xyz

                           $("#my").attr("data-foo"); // >> def
                           <div id="my" data-foo="def"></div>



                                                                                                         94


                                                                                        www.trk.kg
   89   90   91   92   93   94   95   96   97   98   99