2011-11-22 67 views
8

請看看這個例子:http://jsfiddle.net/HHDpK/1/

正如你看到兩個挑肥揀瘦之間的差異只在於線

$("#chooser-1 .y").removeAttr("selected"); 

但作爲導致他們的狀態不同(特別是在Chrome中)。 我錯過了什麼,或者它是一個錯誤?

回答

5

看起來像jQuery的屬性內部錯誤。

請注意,在舊版本中,.prop()在1.6版本中引入之前,它的編號爲works as expected

在新的版本,只需要使用.prop()處理元素的這種特性:

$("#chooser-1 .x").prop("selected", "selected"); 
$("#chooser-1 .y").removeProp("selected"); 

jsFiddle update

不僅如此 - 在以前選擇的元素上使用.removeProp("selected")prop()將導致原始選擇返回而不是沒有選擇任何內容 - 理想的行爲。

+0

謝謝,我確實決定在我的代碼中使用'prop'。 – Maxim

+1

儘管它可以工作,但是prop()沒有在HTML選項元素中設置selected屬性,所以我使用了這兩個{.removeProp('selected')。removeAttr('selected')}和{.prop(' 'selected','selected')。attr('selected','selected')} – QMaster

2

我發現上面的答案也失敗了,我不得不將prop設置爲false以使選定的項目不成立。

$("#chooser-1 .x").prop("selected", false); 

removeProp會導致不良後果,例如無法再次重新選擇選項。

我使用jquery 1.6.2