2015-10-05 36 views
1

我的變量非常漂亮聲明:如果設置了變量,則將跨度縮寫爲文本?

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' 
    } 
}; 

有什麼辦法增加跨度內嵌少一點的代碼?

回答

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>' : ''; 
0

有點少,但不是所有的東西:

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

如果你知道option.data('alt')韓元」 t是falsey即使它在那裏,你可以縮短一個很多:

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

...因爲測試會出現假的null""undefined

1

試試這個

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

由於我們codegolfing我在這裏假設我們可以提出骯髒的事情,甚至刪除結束標籤:

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

如果您將此文本添加到DOM,則無論如何您都應該獲得結束標籤。

相關問題