使用JavaScript處理<select>
標記時,我遇到了Internet Explorer 8的奇怪行爲。打開後無法使用JavaScript處理選擇標記
說我想添加一個<option>
到<select>
,比在jQuery我可以使用類似$("select").prepend(myOption)
。但是,如果<select>
元素是使用JavaScript 和創建的,則用戶已打開選擇項,但這不起作用,Internet Explorer(8)不顯示新選項。在Firefox中這工作得很好。
一個例子:
<!doctype html>
<head>
<meta charset="utf-8">
<title>Test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script>
function prependOption(select) {
$("select").each(function(i, element) {
var option = $('<option value="abc">xyz</option>');
$(element).prepend(option);
});
}
$(function() {
var container = $("#container");
container.append($("select.prototype").clone());
});
</script>
</head>
<body>
<input type="button" value="Click" onclick="prependOption(this)" /><br />
<div id="container">
<select class="prototype">
<option>Lorem ipsum</option>
</select>
</div>
</body>
</html>
當你打開網頁,你會看到兩個選擇框 - 一個正常和一個使用jQuery的clone()
創建。如果您單擊該按鈕,則會爲它們添加一個選項。現在,如果您單擊並打開兩個選擇框並再次單擊該按鈕,則僅向第一個選擇框添加一個新選項。
任何想法如何解決這個馬車行爲?我需要將選項添加到使用JavaScript創建的<select>
。
錯誤正在發生的地方我不確定...但是IE9及以下版本已知與.innerHTML屬性有關。 http://webbugtrack.blogspot.ca/2007/08/bug-274-dom-methods-on-select-lists.html以及關注活動的問題http://webbugtrack.blogspot.ca/2009/02/ bug-487-onclickonfocus-bugs-on-select.html如果在封面下,jQuery試圖在不克服IE漏洞的情況下操縱這些漏洞,它可能會有問題。 – scunliffe 2013-04-04 13:41:02