if语句的多个缩写?

时间:2012-10-11 22:06:21

标签: javascript jquery

JavaScript中多个if shorthands的语法是什么?

$('#field-'+i+' .name').css({
    top: '30%',
    width: '100%',
    'letter-spacing': i==1 ? '-2.5px' : '-1px',
});

我希望字母间距有多个缩写,例如:

'letter-spacing': i==1 ? '-2.5px' i==3 ? '-1.5px' : '-1px'

6 个答案:

答案 0 :(得分:2)

实际上,如果你想把它放在一行代码中,那么内联多个ternery操作符并没有错或错,但你可以在那里使用更具可读性的风格。

但是,我的建议是使用lookup-object或 Array ,特别是如果你有很多不同的状态。

var values = ['1px', '-2.5px', '5px', '-1.5px'];

$('#field-'+i+' .name').css({
    top: '30%',
    width: '100%',
    'letter-spacing': values[ i ],
});

答案 1 :(得分:1)

您只是错过:来完成第一个条件:

我添加了一些parens来帮助一点:

'letter-spacing': (i == 1) ? '2.5px' : ((i == 3) ? '-1.5px' : '-1px')

答案 2 :(得分:1)

i === 1 ? '-2.5px' : i === 3 ? '-1.5px' : '-1px'

答案 3 :(得分:1)

看起来你在谈论嵌套的三元表达式 - 我倾向于像下面那样缩进:

'letter-spacing': i==1 
    ? '-2.5px' 
    : i==3 
        ? '-1.5px' 
        : '-1px'

答案 4 :(得分:1)

如果您有很多选择,请考虑哈希:

var hash = {
    1: '-2.5px',
    3: '-1.5px'
};

然后:

'letter-spacing': hash[i] || '-1px'

如果i是整数,则可以使用数组而不是哈希对象。但是,该对象更灵活。

答案 5 :(得分:1)

@ChrisFrancis:表格三元变体:

`'letter-spacing': i == 1 ? '-2.5px' 
                 : i == 3 ? '-1.5px'
                 :          '-1px'

在这种情况下可能有点令人困惑,第一个“:”意味着别的东西,但是季节尝试