【发布时间】:2016-04-22 13:00:46
【问题描述】:
此问题似乎与 Internet Explorer 无关:
当使用 JavaScript 双击它们时,我将 option 标记从一个 select 移动到另一个。 select 元素可以有很多项目,所以我用overflow: auto; 设置了高度,以便它们滚动。如果您向下滚动列表并双击要移动的项目,select 列表将在删除 option 时向上滚动到顶部,而不是像在 Chrome 或 Firefox 中那样停留在当前滚动到的位置.
我在这里做了一个基本的例子来证明这一点:https://jsfiddle.net/yk8LeLbw/1/
Javascript 非常简单:
$(".listBoxSelectorAvail").dblclick(function() {
$(this).find("option:selected").remove().appendTo(".listBoxSelectorAssigned");
});
$(".listBoxSelectorAssigned").dblclick(function() {
$(this).find("option:selected").remove().appendTo(".listBoxSelectorAvail");
});
我无法找到发生这种情况的任何具体原因 - 我不确定这是错误还是预期行为,但有什么可以做的吗?
编辑:使标题更清晰
编辑 2:我希望 stop 滚动,但到目前为止我提出的最佳解决方案是在项目移动后重新滚动,如下所示: https://jsfiddle.net/yk8LeLbw/2/
【问题讨论】:
-
我使用的是 IE 11,它似乎可以按预期工作。
-
有趣 - 我也在使用 IE11,它对我来说跳到了列表的顶部。
-
"...选择的列表在 Internet Explorer 中跳到顶部,而不是保留它的位置..." - 保留它的位置到底是什么意思?它不会保留其位置,因为它已被删除并附加到另一个列表中。
-
@Brett 抱歉,我没有解释清楚:我的意思是,当您在
select元素中向下滚动并双击select滚动回顶部的项目时列表而不是停留在它所在的滚动位置。更新问题。 -
IE 的行为不同。浏览器就像雪花,没有两个是一样的。您可能必须将
select包装在div中,并使用一些CSS 规则让div控制滚动。阅读this。
标签: javascript jquery html internet-explorer