Javascript 使用jQuery选项设置动画
我正试图编写一个jQuery插件来制作一些动画,但我希望将动画选项作为字符串传入,如下所示:Javascript 使用jQuery选项设置动画,javascript,jquery,Javascript,Jquery,我正试图编写一个jQuery插件来制作一些动画,但我希望将动画选项作为字符串传入,如下所示: (function ($) { $.fn.animateBox = function (options) { options = $.extend({ animation: "backgroundColor: '#0E4839', padding: '10px', color: '#ffffff', fontSize: '153.846%', margin
(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);
这是可能的,因为上面正在抛出一个错误,抱怨
选项中的点。动画应该是一个分号(因为它需要类似背景色:'#0E4839'
)您正在以字符串形式传递属性,但jQuery动画需要一个对象。并且不能替换{}
中的变量(对象文字)
因此,最简单的解决方案是将动画
制作为对象而不是字符串,使其看起来像这样:
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')代码>为什么要将其作为字符串而不是字符串传递object@abhitalks啊,太简单了!如果你加上这个作为回答,我会的accept@Pete:谢谢。作为答案添加。