我有一个需要从另一个选择中驱动的动态选择,但我似乎无法让它在 IE 中工作(使用 IE9)。我在这里看过这篇文章,但是(除非我不理解)这似乎没有帮助:Dynamic Related Selects with jQuery, not work in IE。
我真的把它简化了,所以很容易理解这个问题。我有 2 个选择,1 个驱动另一个。因此,当您在第一个中选择某些内容时,第二个会更改。对于这个例子,我只是在选择中添加一个新项目,即使这在 IE 中也不起作用:
var mydiv = $("#testdiv");
$("<select id='f1'>").appendTo(mydiv);
$("<select id='f2'>").appendTo(mydiv);
$("#f1").append("<option value='1'>1</option>");
$("#f1").append("<option value='2'>2</option>");
$("#f2").append($("<option>").attr("value", "n"));
$("#f1").change(function () {
$("#f2").append("<option value='t1'>t1</option>");
});
<div id="testdiv"></div>
因此,理论上我们应该从 2 个选择列表开始,“f2”将在其中包含 1 个空白选项。
接下来,从“f1”中选择一个项目,它将为“f2”添加一个新选项。
这完全符合我在 Firefox 和 chrome 中的要求。在 IE 中,它的行为很奇怪。以 IE 为例:
方案 1
- 我打开页面并检查“f2”选择。它有 1 个空白值
- 我在“f1”中选择一个项目
- 我检查“f2”,它仍然有 1 个空白值
方案 2
- 我打开页面并没有触摸“f2”选择。
- 我在“f1”中选择一个项目
- 我检查了“f2”,它有 2 个项目!
- 我在“f1”中选择了另一个项目
- 我检查了“f2”,它仍然有 2 个项目?!?
所以看起来我第一次激活选择控件时它必须对现有的 HTML 做一些事情......现在这就是它要从这里呈现的全部......
这让我发疯,我做错了什么?!?
注意:不确定是否重要,但两个选择都是使用 javascript/jquery 动态生成的,因为在异步调用完成之前我不知道它们的值。
由于通过评论进行调查而更新了问题......似乎我关于动态创建对象的最后一个注释对于重新创建问题至关重要