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

Если  мы  хотим  обрабатывать  каждый  элемент  то  соорудим  следующую  конструкцию
             внутри нашего плагина:


                    // необходимо обработать каждый элемент в коллекции
                    return this.each(function(){

                           $(this).click(function(){
                                  $(this).css('color', options.color);

                           });
                    });


                    // предыдущий вариант немного избыточен,
                    // т.к. внутри функции click и так есть перебор элементов
                    return this.click(function(){

                           $(this).css('color', options.color);
                    });


                    Опять  же  напомню,  если  ваш  плагин  не  должен  что-то  возвращать  по  вашей
                    задумке  —  возвращайте  this  —  цепочки  вызовов  в  jQuery  это  часть  магии,  не
                    стоит её разрушать. Методы each() и click() возвращают объект jQuery.




             Публичные методы


             Так,  у  нас  написан  крутой  плагин,  надо  бы  ему  еще  докрутить  функционала,  пусть  цвет
             регулируется  несколькими  кнопками  на  сайте.  Для  этого  нам  понадобится  некий  метод
             «color», который и будет в ответе за всё. Сейчас приведу пример кода готового плагина —
             будем курить вместе:


                    // значение по умолчанию
                    var defaults = { color:'green' };

                    // наши публичные методы
                    var methods = {
                    // инициализация плагина
                    init: function(params) {

                           // актуальные настройки, будут индивидуальными при каждом запуске
                           var options = $.extend({}, defaults, params);

                           if (!this.data('mySimplePlugin')) {
                                  // закинем настройки в реестр data
                                  this.data('mySimplePlugin', options);
                                  this.bind('click.mySimplePlugin', function(){

                                                                                                         91


                                                                                        www.trk.kg
   86   87   88   89   90   91   92   93   94   95   96