2014-01-06 2 views
0

Я пытаюсь написать плагин JQuery, чтобы сделать анимацию, но я хочу, чтобы передать параметры анимации в виде строки, подобной следующей:с помощью опции 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')

+0

сделать анимацию объектом вместо строки. затем 'box.animate (options.animation, 'slow');' – Abhitalks

+0

почему вы хотите передать его как строку, а не как объект –

+0

@abhitalks ah, так просто! Если вы добавите это в качестве ответа, я приму – Pete

ответ

1

Передано свойство как строка, но анимация 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'); 
Смежные вопросы