2012-09-02 71 views
1

考慮以下情況設置一個選擇元件的選擇,:選擇返回false爲具有多個屬性上運行時

我有一個選擇元件

<select> 
    <option>a</option> 
    <option selected="selected">b</option> 
    <option selected="selected">c</option> 
</select> 

然後使用jquery我設定的多個屬性

$('select').attr('multiple', true); 

爲什麼下面的代碼返回false?

$('select').children('option').eq(1).is(':selected') 

雖然返回true,

$('select').children('option').eq(2).is(':selected') 

但如果選擇元素的多屬性手動設置上的HTML代碼,他們都返回true。 (在webkit,firefox和IE上試用)

這是我的錯誤,還是這是預期的行爲?

謝謝

回答

4

因爲選擇而沒有多個屬性集渲染,只有最後一次選擇的選項實際選擇。在允許多個值後,您需要設置選定的選項。

這兩個查詢都會返回所期望的結果。您錯過的是您的b選項實際上未選中。檢查瀏覽器中呈現的內容。

編輯:這行修復行爲,您多重選擇激活後添加:

$('select').html($('select').html()); 
+0

在Chrome開發工具,我看到兩個選項有選擇的屬性,但是查詢時:通過jQuery的選擇,它不會返回預期的結果。如果我使用純JavaScript檢查元素,它們也具有選定的屬性。有任何想法嗎? –

+0

你說得對,但Chrome瀏覽器只渲染** c **。檢查[小提琴](http://jsfiddle.net/mgvrF/2)。我會說你想要什麼是相當不尋常的,期望它的工作;)至少這個問題是不是在jQuery .. –

+0

是的,我看到了,所以這是一個不可能的事情做手動指定多個屬性:(謝謝你的答案.. –

相關問題