如何使用数组扩展jquery插件的选项
我正在写一个jQuery插件。 有一些默认选项,我可以在HTML上更改它们,但如果它包含一个数组,如何更改选项?
这是插件中的代码:
(function($){ $.fn.extend({ aniTag: function(options) { var defaults = { radius: 25, defaultradius: 0, enableTilt: true, tilt : 20, random : true, randomMax : 25 , }; var colors = new Array('4AC7ED', 'FDC015', '9F78EC', 'F25C33'); var options = $.extend(defaults, options); return this.each(function() { var o = options; //some stuff }); } }); })(jQuery);
这是html用法:
$(document).ready(function() { $('.tags').aniTag({enableTilt: false}); });
如您所见,我可以更改enableTilt
选项。 我需要做的是更改color
数组中的值。 是的,我知道我需要将该数组放在defaults
var中,但我不知道该怎么做。
将您的颜色数组添加到默认值中
var defaults = { radius: 25, defaultradius: 0, enableTilt: true, tilt : 20, random : true, randomMax : 25 , colors: ['4AC7ED', 'FDC015', '9F78EC', 'F25C33'] };
然后你可以用它来覆盖它们
$('.tags').aniTag({enableTilt: false, colors: ['ffffff', '000000']});
小提琴演示 : http : //jsfiddle.net/Beufe/1/
var defaults = { radius: 25, defaultradius: 0, enableTilt: true, tilt: 20, random: true, randomMax: 25, colors: ['4AC7ED', 'FDC015', '9F78EC', 'F25C33'] }; alert(defaults.colors.length); // output: 4 alert('Default Value colors[0] = ' + defaults.colors[0]); // output: 4AC7ED var options = $.extend(defaults, { enableTilt: false, colors: ['ffffff', '000000'] }); alert(options.colors.length); // Output: 2 alert('New Value colors[0] = ' + options.colors[0]); // output: ffffff
我原以为你能做到 –
var newcolors = new Array('FFFFFF', '00FFFF', '9F78EC', 'F25C33');
然后只需通过选项图将数组传递到插件中 –
$('.tags').aniTag({enableTilt: false,colorArray:newcolors});
如果您也在初始选项中定义数组,
var defaults = { radius: 25, defaultradius: 0, enableTilt: true, tilt : 20, random : true, randomMax : 25 , colorArray:colors };
然后,extend函数应该使用已传入的新数组覆盖初始数组。