打开后无法使用 JavaScript 操作选择标签
Cannot manipulate select tag with JavaScript after opening it
在使用JavaScript操作<select>
标签时,我遇到了Internet Explorer 8的奇怪行为。
假设我想为<select>
添加一个<option>
,而不是在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>
添加选项。
试试这个:
new Object($("select.prototype"))
解决方案是避免clone()
- 显然它在Internet Explorer 8中无法正常工作。
var select = $('<select></select>');
select.append($("select.prototype option").clone());
container.append(select);
因此,我没有克隆<select>
,而是创建一个新的,并且只克隆其选项。
相关文章:
- 通过javascript操作图像,非常简单
- 如何使用javascript操作SVG节点,使其在MS Edge中工作
- Rails-带有单选按钮的表单,带有启用/禁用附加元素的javascript操作
- javascript操作(轮盘赌)打开特定页面的结果
- 无法延迟iPhone/iPad上的两个JavaScript操作
- 单击时的javascript操作不起作用
- 如何在我更改输入时添加javascript操作'的内容
- WebSQL和Javascript操作顺序
- 如何使用 JavaScript 操作 html 按钮元素的“onclick”事件
- 使用javascript操作css元素,左短划线
- 遇到奇怪的javascript操作
- 有没有一种方法可以在长时间运行的JavaScript操作之前强制回流
- 根据用户在asp.net网站中选择的弹出窗口使用JavaScript操作网页
- javascript操作错误
- 如何延迟QML中的JavaScript操作
- 使用 JQuery 或 Javascript 操作 JSON
- 单击时的 JavaScript 操作
- 如何在DOM上的javascript操作之后立即获取html元素的高度
- 基于多个可能的 DIV 内容的 JavaScript 操作
- 在加载数据表后触发 JavaScript 操作