Плагин jQuery. Как получить доступ к опциям плагина из метода init в методе destroy? Пишу простенький jQuery плагин. Его суть - изменение цвета шрифта у элемента, на который он установлен. Если указан массив цветов, то цвета меняются поочередно по таймеру. Если плагин был установлен, его действие можно отменить вызовом соответствующего метода. (function($){ var methods = { init : function( options ) { //настройки по умолчанию options = $.extend({ timerDuration: 2, //время задержки перед сменной цвета color: ['#c9f', '#f60', '#09f'], // массив цветов cycle: true // повторять изменение цветов по кругу }, options); var self = this; var changeColor = function () { var colorIndex = 0; var colorLength = options.color.length; setTimer = setTimeout(function changeColor() { if($.isArray(options.color)) { self.css("color", options.color[colorIndex]); if (colorIndex 0 ){ setTimerCycle = setTimeout(changeColor, options.timerDuration * 1000); } } }, options.timerDuration * 1000); };
return this.each(changeColor); }, destroy : function () { var self = this; var def = function () { // в этом методе нужно отменить изменения цвета и очистить таймер. Как правильно получить доступ к данным внутри метода init? }; return this.each(def); } }; jQuery.fn.changeСolor = 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 + ' не существует для jQuery.changeColor' ); } }; })(jQuery); Теперь применим плагин к абзацам:$('p').changeColor({ timerDuration : 5, color : ['red','green','blue'], }); А теперь отменим действие плагина:$('p').changeColor('destroy'); Проблема с реализацией метода destroy. В нем необходимо очистить таймер и вернуть исходный цвет. Подскажите как в нем можно получить доступ к опциям и данным метода init?
Для того чтобы получить доступ к опциям и данным, определенным в методе init, в методе destroy, можно использовать jQuery data() метод.
В методе init, когда устанавливаются опции плагина, можно сохранить их в элементе, к которому применяется плагин, используя data() метод. Например, в методе init, в самом начале функции changeColor, можно сохранить опции в элементе:
Таким образом, вы сможете получить доступ к опциям плагина из метода destroy и выполнить необходимые действия, например, остановить таймер и вернуть исходный цвет элемента.
Для того чтобы получить доступ к опциям и данным, определенным в методе init, в методе destroy, можно использовать jQuery data() метод.
В методе init, когда устанавливаются опции плагина, можно сохранить их в элементе, к которому применяется плагин, используя data() метод. Например, в методе init, в самом начале функции changeColor, можно сохранить опции в элементе:
this.data('changeColorOptions', options);В методе destroy, можно затем получить доступ к этим опциям, используя data() метод:
var options = this.data('changeColorOptions');Таким образом, вы сможете получить доступ к опциям плагина из метода destroy и выполнить необходимые действия, например, остановить таймер и вернуть исходный цвет элемента.