2
$.fn.demo = function(options) {
    var defaults = {
        opacity: 50,
        width: '250px',
        height: '100px',
        color: 'red'
    }
  }

有没有办法有条件地将选项传递给函数,例如:

$().demo({
opacity: 60,
if (div.length){
    width: '350px'
}
height: '100px'
});

只是好奇什么是处理您可能希望根据情况传递不同选项的情况的最佳方法。谢谢!

4

2 回答 2

12

如果它足够简单,你可以使用三元运算

$().demo({
    opacity: 60,
    width: div.length ? '350px' : '250px',
    height: '100px'
});

如果它更复杂,您应该只在函数调用之外编写参数对象。

var parameters = {
    opacity: 60,
    height: '100px'
};
if(div.length)
    parameters.width = '350px';
$().demo(parameters);
于 2012-06-27T15:50:24.723 回答
4
$.fn.demo = function(options) {
    var defaults = {
        opacity: 50,
        width: '250px',
        height: '100px',
        color: 'red'
    };
    options || (options = {});
    defaults = $.extend(defaults, options);
    ... function body...
}

当您使用扩展时,它会覆盖默认值并添加任意数据(如果存在)。

于 2012-06-27T15:50:40.130 回答