【发布时间】:2012-11-29 02:25:45
【问题描述】:
var opt = $("select option:first");
opt.remove();
$("button").on("click", function() {
$("select").prepend(opt).val(1);
});
这在某些浏览器中运行良好。但是,当然,IE 不是其中之一。在 IE 中,组合以两个选项结束,但文本为空白(没有选定的选项)。我认为这是因为该选项仍未加载到 DOM 中。我假设因为我可以使用this code 轻松解决此问题:
var opt = $("select option:first");
opt.remove();
$("button").on("click", function() {
$("select").prepend(opt);
setTimeout(function() {
$("select").val(1);
}, 1);
});
但是,我更喜欢更好的东西。有什么想法吗?
注意:我不是在寻找选择器的性能或类似的东西。发布的代码只是一个简化的示例,不是我的真实脚本。
【问题讨论】:
-
在 IE 中运行
opt.prop("selected", true).prependTo("select");是否有效?顺便说一句,您可能希望.detach()而不是.remove()来保存数据和事件。 -
您使用的是什么版本的 jQuery?如果您使用的是最新版本的库,这将不起作用,这有点令人惊讶。
-
@pointy 令人惊讶,但它失败了,如 1.8.2 所述。 @pimvdb 建议的
prop也失败了,尽管我发誓它在我第一次尝试时有效,但不会再次有效。 -
@IHateLazy 在我的 IE9 中,选择变为未选择,而不是选择数字 1。
-
如果我这样做的话,对我有用
.val(1).val(1)
标签: javascript jquery dom-manipulation