Я пытаюсь написать плагин jQuery, чтобы сделать некоторую анимацию, но я хочу передать параметры анимации в виде строки, например:
(function ($) {
$.fn.animateBox = function (options) {
options = $.extend({
animation: "backgroundColor: '#0E4839', padding: '10px', color: '#ffffff', fontSize: '153.846%', margin: '0 0 1em 0'"
}, options);
return $(this).each(function () {
var box = $(this);
box.animate({ options.animation }, 'slow');
});
};
})(jQuery);
Возможно ли это, так как вышеописанное в настоящее время вызывает ошибку, жалуясь на точку в параметрах. options.animation
должна быть в виде двоеточия (так как ожидается что-то вроде backgroundColor: '#0E4839'
)
Вы передаете свойство как строку, но анимация jQuery ожидает объект. И вы не можете заменить переменную внутри {}
(литерал объекта).
Таким образом, самым простым решением было бы сделать animation
объектом вместо строки, чтобы она выглядела так:
options = $.extend({
animation: {
backgroundColor: '#0E4839',
padding: '10px',
color: '#ffffff',
fontSize: '153.846%',
margin: '0 0 1em 0'
}
}, options);
затем измените это:
box.animate({options.animation}, 'slow');
к этому:
box.animate(options.animation, 'slow');
box.animate(options.animation, 'slow');