Плагин 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
192 +1
0
Ответы
1

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

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

this.data('changeColorOptions', options);

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

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

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

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир