2009-09-29 13 views
0

我有一個'select'下拉列表,其中有一個玩家姓名列表,默認情況下第一個項目也是空白項目。我想對用戶點擊下面的按鈕時是否選擇該項目進行簡單測試。有沒有人知道爲什麼第一種方法在下拉式測試選定項目時失敗?

我在兩個可能的解決方案來:

1)

if($("#players option:selected").is(":eq(0)")) 
{ 
    alert("Please select a player!"); 
} 

2)

if($("#players option:eq(0)").is(":selected")) 
{ 
    alert("Please select a player!"); 
} 

解決方案#2的作品完美,但#1總是返回true 。有沒有人知道這是爲什麼會有技術原因或限制?

感謝您的回覆!

回答

3

要回答爲什麼數字1總是如此,這是因爲1和2做的事情稍有不同。

解決方案#1說「讓我選定的<option>,然後檢查它是否在包裝集合中的第一個位置」,它始終是(一次只能有一個選定的選項)。

解決方案#2說「讓我第一個<option>,然後告訴我它是否被選中」,如果選擇除第一個以外的其他<option>,則不會出現這種情況。

編輯:

我想你在找什麼在溶液#1以下

if($("#players option:selected").is(":first-child")) 
{ 
    alert("Please select a player!"); 
} 

下面是一個Working Demo在行動。添加/編輯到URL看代碼

+0

這幾乎清除了事情!謝謝! – Zoltan 2009-09-29 16:23:35

0

我認爲選項1將返回一組選定的選項(通常總是選擇1項),然後測試該組的第一個元素是否存在,哪個它總是會的。 (即,它不測試返回的選定選項是否是列表中的第一個選項,而是獲取選定選項的列表並檢查是否有任何選項)。

0

:eq(0)選擇器獲取集合中的第一個元素。因此,當您調用is方法時,您的元素將始終與它匹配。

相關問題