如果设置了变量,则缩写到文本的范围?

时间:2015-10-05 11:52:10

标签: javascript jquery

我有一个很好的变量声明:

var text = option.text(),
    attr,
    li,
    attr = {
        'class': 'option',
        html: text,
        data: {
            option: option
        },
        css: {
            display: 'block'
        }
    },
    li =  $j('<li/>', attr);

现在我需要在文本中添加一个范围(如果存在),如下所示:

var option = $j(this),
    text = option.text(),
    attr,
    li;

if(typeof option.data('alt') !== 'undefined') {
    text += '<span class="alt">' + option.data('alt') + '</span>';
}

attr = {
    'class': 'option',
    html: text,
    data: {
        option: option
    },
    css: {
        display: 'block'
    }
};

有没有办法用更少的代码添加内联内联?

5 个答案:

答案 0 :(得分:1)

而不是:

if(typeof option.data('alt') !== 'undefined'){
  text += '<span class="alt">'+option.data('alt')+'</span>';
}

尝试使用三元运算符:

text += option.data('alt') ? '<span class="alt">'+option.data('alt')+'</span>' : '';

答案 1 :(得分:1)

试试这个

text+= (typeof option.data('alt') !== 'undefined')?'<span class="alt">' + option.data('alt') + '</span>':'';

答案 2 :(得分:0)

少一点,但不是那么多:

var text = option.text() + (typeof option.data('alt') !== 'undefined'
                            ? '<span class="alt">' + option.data('alt') + '</span>'
                            : ''),
    attr,
    li,
    // ...

如果你知道option.data('alt')即使在虚假,那么你也可以缩短它:

var text = option.text() + (option.data('alt')
                            ? '<span class="alt">' + option.data('alt') + '</span>'
                            : ''),
    attr,
    li,
    // ...

...因为null""undefined等的测试结果为假。

答案 3 :(得分:0)

if(!option.data('alt')) text += '<span class="alt">'+option.data('alt')+'</span>';

答案 4 :(得分:0)

由于我们在这里编写代码,我想我们可以提出脏东西,甚至删除结束标记:

text+= (typeof option.data('alt') !== 'undefined')?'<span class="alt">' + option.data('alt'):'';

如果您将此文本添加到DOM,您仍应获得结束标记。