解决方案1 我发现很简单的解决方案。
select.style.display = "none";
setTimeout(function() {
select.style.display = "block";
}, 10);
在DOM这个隐藏元素,这因为那下拉列表将被关闭,然后用10ms的延迟(毫不拖延它不工作),将其返回到DOM。
解决方案2:稍微复杂一些,但没有延迟是totaly从DOM删除元素,然后立即返回它。
var parent = select.parentElement;
var anchor = document.createElement("div");
parent.insertBefore(anchor, select);
parent.removeChild(select);
parent.insertBefore(select, anchor);
parent.removeChild(anchor);
这存储元素的parrent,然后在选择之前带锚。锚在那里用于恢复DOM中的相同位置的选择,然后再恢复。当然,它可以实现功能选择元素。
HTMLSelectElement.prototype.closeDropdown = function() {
var parent = this.parentElement;
var anchor = document.createElement("div");
parent.insertBefore(anchor, this);
parent.removeChild(this);
parent.insertBefore(this, anchor);
parent.removeChild(anchor);
}
,然后就打电话
select.closeDropdown();
Example
当改变一个文本框,我打开一个“提示”框,如果改变发生时点击选择,我现在通过隐藏选择,以避免现在令人不安的下拉列表(); ... visibleselects.show(); –