2012-08-01 85 views
3

我正在處理店面包(所以我沒有編輯核心文件的選項),我們有下拉菜單來選擇用戶想要的前後臺爲一張名片。某些卡片只有一個選項,所以如果只有一個選項,客戶端會隱藏下拉菜單。只有一個非空白選項的jQuery select下拉菜單

簡單,對嗎?

$("select").each(function(){ 
    var count = $(this).children("option").length; 
    if (count == 1) { 
     // there's only one option, do something 
    } 
}); 

這樣的作品,但問題是,系統有時會產生一些的下拉菜單中的空白<option>,所以沒什麼兩個選擇,但只有一個「真實」的選項:

<select> 
    <option></option> 
    <option value="Something">A real option</option> 
</select> 

基本上,我需要選擇<select> s,只有一個<option>或兩個<option> s,其中一個只是空的。

我不能完全包圍這種if語句的邏輯,所以如果任何人有任何建議,將不勝感激。

+0

您可能可以將選擇器更改爲「選項[value]」或「選項:not(:empty)」,具體取決於空的值是否總是空的且沒有值和文本 – MrOBrian 2012-08-01 18:05:57

+0

根據例如,是''總是這樣嗎?如果是這樣,您可以刪除其標籤中沒有文字的「

回答

5

您可以使用not方法和:empty選擇:

$("select").each(function(){ 
    var count = $(this).find("option").not(':empty').length; 
    if (count == 1) { 
     alert('okay') 
    } 
}); 

DEMO

+0

噢,這是比我更好的解決方案。 – KRyan 2012-08-01 18:07:39

+0

我真的不能相信我以前沒有想過那麼簡單。謝謝! – scferg5 2012-08-01 18:10:13

0

更改您計算它們的方式:

$('select').each(function() { 
    var count = 0; 
    $(this).children('option').each(function() { 
     if ($(this).text()) // true if not empty 
     { 
      ++count; 
     } 
    }); 
    if (count == 1) // count only includes non-empty options 

這應該處理它。

相關問題