有条件地将选项传递给jquery函数

时间:2012-06-27 15:48:39

标签: javascript jquery

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

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

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

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

2 个答案:

答案 0 :(得分:10)

如果足够简单,您可以使用ternary operation

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

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

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

答案 1 :(得分:3)

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

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