Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打开select标记后,无法使用JavaScript对其进行操作_Javascript_Jquery_Internet Explorer - Fatal编程技术网

打开select标记后,无法使用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

在使用JavaScript操作
标记时,我遇到了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漏洞的情况下操纵这些事件,那么它可能会遇到问题。