说,我有一个jquery插件,默认选项可以像任何插件一样被覆盖。
我想要做的是添加多个默认选项,可以通过选项或插件“trigger”中的某个位置调用。 问题是......怎么样?
Jsfiddle有点进一步解释: http://jsfiddle.net/A7LMc/
此插件的工作方式与问题完全无关。
基本上是这样的:
if ( option == 'b' ) {
var defaults = {
width: '260',
height: '120'
};
}
else {
var defaults = {
width: '60',
height: '10'
};
}
然后在选项中调用它:
<script type="text/javascript">
$(document).ready(function() {
$('.boxes').b({
option: 'b',
width: '500'
});
});
</script>
进一步阐述:
这可行,但不是我想要的:
http://jsfiddle.net/A7LMc/1/(在js中)
======
这不起作用,或多或少是我想要的:
http://jsfiddle.net/A7LMc/2/(在html中)
..我说“或多或少”的原因是因为..好吧,它不起作用,我真的不在乎如何调用它,只要它在插件触发器代码中在<script>
标记内,很简单。
答案 0 :(得分:2)
已移至插件:http://jsfiddle.net/A7LMc/3/
if ( options.option == 'b' ) {
var defaults = {
width: '260',
height: '120'
};
}
else {
var defaults = {
width: '60',
height: '10'
};
}
然后:
$('.boxes').b({
option: "b",
width: '500'
});
var optiondefault = "width:500";
var optiona = { width: 260, height: 120, optiondefault }
var optionb = { width: 60, height: 10, optiondefault }
$('.boxes').b({optiona});
否则为什么不在插件中执行此操作?
或者你可以像这样的数组做到....
var options = {
a:{ width: '100', height:'100' },
b: { width: '100', height:'100' }
};
$('.boxes').b({options["a"]});
答案 1 :(得分:0)
这是回答你的评论而不是你的问题,
obj = {
a : {
width: '100',
height: '100'
},
b : {
width: '200',
height: '200'
},
}
//obj.a.width >>>> 100
//obj.b.width >>>> 200
OR
obj = {
[
{ width: '100', height:'100' },
{ width: '200', height:'200' },
]
}
// obj.[0].width >>> 100
// obj.[1].width >>> 200
至于你的问题,jquery已经为你做了,用回调中提供的选项覆盖默认选项,
如果你想要多个选项再次覆盖它,那就太愚蠢了,因为他们想要在同一个回叫中覆盖他们已经覆盖的东西......
<强>更新强>
这是你的最后一个选择
obj = {
options : {
option_a : {width: '',height:''},
option_b : {width: '',height:''}
},
use_option: 'b'
}
$('.boxes').b(obj);
这样你可以在你的widget /扩展插件中控制它