javascript - 如何防止过滤后 <select> 高度缩小?

标签 javascript jquery html css google-chrome

fiddle

HTML

<select>
    <option class="a">aaaaa</option>
    <option class="a">a</option>
    <option class="a">a</option>
    <option class="a">a</option>
    <option class="a">a</option>
    <option class="a">a</option>
    <option class="a">a</option>
    <option class="a">a</option>
    <option class="a">a</option>
    <option class="a">a</option>
    <option class="a">a</option>
    <option class="a">a</option>
    <option class="a">a</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
    <option class="b">b</option>
</select>
<button>click me</button>

JavaScript

$('button').on('click', function(ev) {
    ev.preventDefault();
    $('.a').prop('disabled',true);
    if($('select').find('option:selected').prop('disabled')) {
        $('select').find('option:enabled:first').prop('selected',true);
    };
});

CSS

option[disabled] {
    display: none;
}

在 Chrome 中打开 fiddle 。点击 <select> .观察它的高度。单击按钮。打开<select>再次。请注意它短了多少,尽管其中仍然有很多值。

为什么 Chrome 会过度缩短下拉列表?我希望它的自然高度是多少,它应该与你第一次打开它时的高度相同。我可以强制 Chrome 重新计算其自然高度吗?

This example应该更清楚。弹出每个选择。请注意,尽管显示的值相同,但它们的高度不同。

最佳答案

It's a bug (感谢 Nico 找到这个)还有 no workaround (感谢 Banana)。

如果你想正确计算高度,你必须实际删除 <options>来自 DOM。

关于javascript - 如何防止过滤后 <select> 高度缩小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24682110/

相关文章:

html - 在图像之间添加空间

html - 全 div 宽度的文本框和按钮

javascript - 如何在 servicenow 中查找脚本/高级引用限定符的位置?

Javascript - 获取链接href

javascript - 获取位于表单内的第二个输入的值。 javascript 查询

javascript - 想要在最后选择的选项上显示 div

javascript - 当我在 codeigniter 中使用 jquery 发出警报时没有任何反应

javascript - 在我的表格中单击了哪个按钮

php - 如何使用页面弹出窗口在Mysql数据库中插入数据而不重新加载页面?

javascript - 更改所有td颜色