我期待能夠輕鬆地添加功能,能夠在select
如何處理不同瀏覽器中optgroup的不同行爲?
<select id="MySelect" name="MySelect">
<option value="">Select ...</option>
<optgroup label="Group1" data-id="Group1">
<option selected="selected" value="1">Value 1</option>
<option value="2">Value 2</option>
</optgroup>
<optgroup label="Group2" data-id="Group2">
<option value="3">Value 3</option>
<option value="4">Value 4</option>
</optgroup>
</select>
上optgroup
點擊直接與支撐jQuery
$("#MySelect").on('click', 'optgroup', function() {
alert($(this).data('id'));
});
和CSS:
#MySelect optgroup {
background-color: orange;
cursor: pointer;
}
然而:
- 鉻38忽略
cursor
CSS爲optgroup
,並忽略該事件單擊完全 - 火狐32榮譽
cursor
CSS和直接忽略點擊事件上optgroup
。 - IE 11火災的
optgroup
當點擊點擊事件,但data-id
報告最後選擇的「選項」的optgroup
,這將是錯誤的,除非最後一個孩子的選擇是無心插柳父optgroup
下方。
在jQuery 2.1.0
,IE和Firefox會提高點擊事件,如果被點擊的optgroup
以下孩子的選擇之一,但不是瀏覽器。
這三個瀏覽器對於應用於optgroup
的背景css顏色是否應應用於子節點selects
也有不同意見。
而且更不用說缺乏支持nested optgroups
然後導致的alternative hacks的做法optgroup
喜歡在不同的CSS樣式選擇
option
縮進爲group headers
,它失去鍵盤選擇可用性。
TL; DR
所以我的問題是,因爲至少4.01,那麼是否有解決方案(例如library - modernizr,jQuery-plugin),直到optgroup
已經在HTML但似乎一直停留在笨伯角落(附件A:到OPTGROUP上bottom of the W3C wiki的鏈接提供了404 )。爲什麼是這樣?optgroup
被標準化爲止?
編輯
這裏的CSS的小提琴的照片與4個瀏覽器我已經在Windows 8.1的PC上得到了方差 - 只有FF顯示光標; FF和IE也將OptGroup的background-color
應用於選項。
只是因爲。但真正關心的是,爲什麼這可能是無法回答的。在一天結束時,可能最需要知道的是如何編寫允許這些差異的代碼。 「爲什麼瀏覽器採用不同的方式」可能需要幾本書才能回答。請注意,這不是真正的問題,而是瀏覽器製造商在瀏覽器中實現的東西。 – 2014-11-01 11:44:28
如果你正在尋找一個更抽象的分析爲什麼它是不同的,我也會考慮發佈原始問題的程序員或超級用戶。SO更適合於具體的簡明答案imho – 2014-11-01 11:46:56
我將q從「爲什麼」改爲「如何處理」,因爲當我們談論多個製造商實施不同的事情時,沒有單一的答案。瀏覽器實現不同的東西。看到netscape/ie和所有的後續。 – 2014-11-01 11:48:50