如何为jQuery插件提供多个预设的默认选项?
比如说,我有一个jquery插件,它带有默认选项,可以像任何插件一样被覆盖 我想做的是添加多个默认选项,这些选项可以通过选项或插件“触发器”中的某个地方调用。 问题是。。怎么做 Jsfiddle进一步解释了这一点: 这个插件如何工作与这个问题完全无关如何为jQuery插件提供多个预设的默认选项?,jquery,plugins,options,Jquery,Plugins,Options,比如说,我有一个jquery插件,它带有默认选项,可以像任何插件一样被覆盖 我想做的是添加多个默认选项,这些选项可以通过选项或插件“触发器”中的某个地方调用。 问题是。。怎么做 Jsfiddle进一步解释了这一点: 这个插件如何工作与这个问题完全无关 基本上是这样的: if ( option == 'b' ) { var defaults = { width: '260', height: '120'
基本上是这样的:
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>
然后在选项中调用它,如下所示:
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>
$(文档).ready(函数(){
$('.box').b({
选项:“b”,
宽度:“500”
});
});
进一步阐述: 这是可行的,但不是我想要的: (在js中) ======== 这不起作用,或多或少是我想要的: (以html格式) …我说“或多或少”的原因是。。好吧,它不起作用,我也不在乎如何调用它,只要它在
标记内的插件触发代码中,并且很简单。移动到插件:
然后:
$('.boxes').b({
option: "b",
width: '500'
});
否则,为什么不在插件内部执行呢 或者你可以像这样做一个数组
var options = {
a:{ width: '100', height:'100' },
b: { width: '100', height:'100' }
};
$('.boxes').b({options["a"]});
这是回答你的评论而不是你的问题
obj = {
a : {
width: '100',
height: '100'
},
b : {
width: '200',
height: '200'
},
}
//obj.a.width >>>> 100
//obj.b.width >>>> 200
或
至于您的问题,jquery已经为您做了这件事,要用回调中提供的选项覆盖默认选项
如果你想让多个选项再次覆盖它,这是愚蠢的,因为谁会想覆盖他们在同一回拨中已经覆盖的东西
更新
这是你最后的选择
obj = {
options : {
option_a : {width: '',height:''},
option_b : {width: '',height:''}
},
use_option: 'b'
}
$('.boxes').b(obj);
通过这种方式,您可以在小部件/扩展插件中控制它为什么不使用对象数组?@Val您告诉我。。(我问这个问题是因为我不知道该怎么做,不仅仅是为了交谈。)我不想用另一组默认选项或类似的东西覆盖默认选项。我希望有一组默认选项可以从触发器代码调用为活动的(这意味着一次只有一组选项处于活动状态)。除此之外,我希望能像平常一样,超越那些。。我之所以提到这一点,是因为我不想要一个不允许我这样做的解决方案。在问题的底部添加了更多的说明。我能看到这一点的唯一方法是使用一个全局变量,并在
$('.box').b({…})之前分配它代码>或将其指定给对象中的放置选项,作为同级,您将拥有要使用的选项。。。。看编辑后的答案…我需要调用插件触发代码中的特定选项。这意味着触发插件的代码(在标签中)在问题的底部添加了更多的说明。好的,我将不得不测试这个。。因为我开始更深地陷入绝望,认为这是不可行的,因为似乎没有什么事情能按我想要的方式工作,但这似乎确实做到了我想要的,以及我最初认为它应该如何工作。是的,它似乎确实起了作用。我只是处于一种震惊的状态,因为它是如此的简单,而且正是我想象它是如何工作的。。从上周二开始,我就一直在尝试这样做:D我去接受它。:)
obj = {
options : {
option_a : {width: '',height:''},
option_b : {width: '',height:''}
},
use_option: 'b'
}
$('.boxes').b(obj);