如何使用数组扩展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函数应该使用已传入的新数组覆盖初始数组。

我想你的意思是你想从html属性中获取参数?

 test 

那么你可以做到

 $('a').data('param1') and $('a').data('param2') 

得到他们。