Jquery 计算opera和chrome中的可见下拉选项,隐藏IE中的选择选项

Jquery 计算opera和chrome中的可见下拉选项,隐藏IE中的选择选项,jquery,html,google-chrome,firefox,opera,Jquery,Html,Google Chrome,Firefox,Opera,我有下拉列表和按钮。当我点击按钮时,我想隐藏选中的选项,当没有更多可用的选项时,隐藏选择本身。很简单,但是。。。下面和上面的代码不适用于opera和chrome,但在mozilla中可以完美地工作。我的意思是,可见选项长度始终为0。那么,如何计算这些浏览器中的可见选择选项呢?关于IE的几句话:selectedOption.hide;和其他隐藏方法,如selectedOption.display'none';并选择选项。样式为“显示”、“无”;不要实际隐藏该选项。。。在IE中如何做到这一点 <

我有下拉列表和按钮。当我点击按钮时,我想隐藏选中的选项,当没有更多可用的选项时,隐藏选择本身。很简单,但是。。。下面和上面的代码不适用于opera和chrome,但在mozilla中可以完美地工作。我的意思是,可见选项长度始终为0。那么,如何计算这些浏览器中的可见选择选项呢?关于IE的几句话:selectedOption.hide;和其他隐藏方法,如selectedOption.display'none';并选择选项。样式为“显示”、“无”;不要实际隐藏该选项。。。在IE中如何做到这一点

<input type="button" value="Ckick" id="hide-option-button" />

<select id="my-select">
    <option value=""></option>
    <option value="1">option 1</option>
    <option value="2">option 2</option>
    <option value="3">option 3</option>    
</select>


$(document).ready(function(){

var button = $('#hide-option-button');
var dropDown = $('#my-select');

button.click(function(){
    var selectedOption = dropDown.find('option:selected');

    // Do nothing if empty option selected
    if (selectedOption.val() == '') return;

    // Remove selected option from drop down (just hide it to be able display it again after)
    selectedOption.hide();

    // Select first empty item to prevent glitch with displaying just selected and hided option in drop down
    dropDown.val('');

    if(shouldHideDropDown(dropDown))
    {
        dropDown.hide();
    }
});

function shouldHideDropDown(dropDown) {
    var visibleOptions = dropDown.children(':visible');
    console.log(visibleOptions.length);
    console.log(visibleOptions.size());
    return visibleOptions.length === 1;
}

});

另外,我使用Opera 17.0.1241.53、Chrome 30.0.1599.101 m、Mozilla Firefox 24.0、IE 10.0.920016721,运行在Windows 7 x64上。

当我试图在html选项元素上应用css样式时,我经历了一段糟糕的时期,试图做与您完全相同的事情

我尝试使用display:none、opacity:0,甚至将其值替换为空

隐藏选项后,聚焦选择框并开始使用键盘。您将看到,即使该选项处于隐藏状态,也会显示该选项


我必须修改我的所有代码才能让它正常工作。我解决这个问题的方法是不尝试设置html选项元素的样式,而是开始使用另一种方法javascript aux数组

这是chrome中的bug。我希望他们很快解决