Плагин 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?

21 Авг 2019 в 07:03
215 +1
0
Ответы
1

Для того чтобы получить доступ к опциям и данным, определенным в методе init, в методе destroy, можно использовать jQuery data() метод.

В методе init, когда устанавливаются опции плагина, можно сохранить их в элементе, к которому применяется плагин, используя data() метод. Например, в методе init, в самом начале функции changeColor, можно сохранить опции в элементе:

this.data('changeColorOptions', options);

В методе destroy, можно затем получить доступ к этим опциям, используя data() метод:

var options = this.data('changeColorOptions');

Таким образом, вы сможете получить доступ к опциям плагина из метода destroy и выполнить необходимые действия, например, остановить таймер и вернуть исходный цвет элемента.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир