<select>
在使用 JavaScript 操作标签时,我遇到了 Internet Explorer 8 的奇怪行为。
假设我想向 a 添加一个<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()
。如果单击该按钮,则会向它们添加一个选项。现在,如果您单击并打开两个选择框并再次单击该按钮,则只会将新选项添加到第一个选择框。
知道如何解决这种错误行为吗?我需要向<select>
使用 JavaScript 创建的选项添加选项。