我有一个很好的变量声明:
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'
}
};
有没有办法用更少的代码添加内联内联?
答案 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,您仍应获得结束标记。