打开select标记后,无法使用JavaScript对其进行操作
在使用JavaScript操作打开select标记后,无法使用JavaScript对其进行操作,javascript,jquery,internet-explorer,Javascript,Jquery,Internet Explorer,在使用JavaScript操作标记时,我遇到了Internet Explorer 8的奇怪行为 假设我想将一个添加到中,那么在jQuery中我可以使用类似$(“选择”).prepend(myOption)。但是如果元素是用JavaScript创建的,并且用户打开了select,那么这将不起作用,并且Internet Explorer(8)也不会显示新选项。在Firefox中,这一切都很好 例如: <!doctype html> <head> <meta ch
标记时,我遇到了Internet Explorer 8的奇怪行为
假设我想将一个
添加到
中,那么在jQuery中我可以使用类似$(“选择”).prepend(myOption)
。但是如果
元素是用JavaScript创建的,并且用户打开了select,那么这将不起作用,并且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>
试验
函数预操作(选择){
$(“选择”)。每个(功能(i,元素){
var选项=$('xyz');
$(元素)。前置(选项);
});
}
$(函数(){
var container=$(“#container”);
container.append($(“select.prototype”).clone();
});
乱数假文
打开页面时,您会看到两个选择框—一个是普通框,另一个是使用jQuery的clone()
创建的。如果单击该按钮,则两个按钮都会添加一个选项。现在,如果单击并打开两个选择框,然后再次单击按钮,则只会在第一个选择框中添加一个新选项
你知道如何解决这个问题吗?我需要为使用JavaScript创建的
添加选项。尝试以下操作:
new Object($("select.prototype"))
解决方案是避免克隆()——显然它在Internet Explorer 8中无法正常工作
var select = $('<select></select>');
select.append($("select.prototype option").clone());
container.append(select);
var select=$('');
select.append($(“select.prototype选项”).clone();
container.append(选择);
因此,我没有克隆
,而是创建一个新对象,只克隆它的选项。如果您是指在container.append()调用中,那么新建对象($(“select.prototype”)
或新建对象($($(“select.prototype”).clone())
对错误的确切发生位置没有帮助我不确定。。。但是众所周知,IE9及以下版本在.innerHTML属性方面存在问题。以及聚焦事件的问题,如果jQuery试图在不克服IE漏洞的情况下操纵这些事件,那么它可能会遇到问题。