jQuery";可见的;不';不能在所有浏览器中工作,但在Firefox中可以

jQuery";可见的;不';不能在所有浏览器中工作,但在Firefox中可以,jquery,firefox,jquery-selectors,cross-browser,Jquery,Firefox,Jquery Selectors,Cross Browser,我制作了一个非常简单的小提琴,你可以在不同的浏览器中查看它 它只适用于Firefox。换句话说,$(“#选择标记id选项:可见”)似乎在其他浏览器中不起作用。发生了什么?这是jQuery错误吗 代码是: <select id='items'> <option value='1' style='display: none;'>One</option> <option value='1' style='display: block;'>

我制作了一个非常简单的小提琴,你可以在不同的浏览器中查看它

它只适用于Firefox。换句话说,
$(“#选择标记id选项:可见”)
似乎在其他浏览器中不起作用。发生了什么?这是jQuery错误吗

代码是:

<select id='items'>
    <option value='1' style='display: none;'>One</option>
    <option value='1' style='display: block;'>Two</option>
    <option value='1' style='display: block;'>Three</option>
    <option value='1' style='display: none;'>Four</option>
</select>

这不是一个jQuery错误——只是(又一个)浏览器的差异

IE不允许您在选项元素()上设置
display:none

如果您同时查看FF和IE中的小提琴,您将看到,
仍然包含IE中的所有四个元素,但FF中只有两个元素,而不管jQuery是否存在


解决方案可能是实际移除元件并在需要时进行更换。

事实上,
:hidden
:visible
上不起作用

您可以尝试使用
disabled=“disabled”
参见:


好吧,好吧。让我们把IE放在一边(就像这个该死的浏览器一样)。但歌剧院或Chrome呢?它们是否也支持选项上的显示:无?当然有。但他们似乎无法根据标签的可见性状态过滤标签。这个问题再次出现,而且初步研究似乎没有发现任何关于这种差异的问题,甚至在任何浏览器的公共bug跟踪器中也没有发现。真奇怪。我想这就是我们现在所拥有的。值得注意的是,
multiple
属性不会影响任何浏览器中的结果,即使该属性会导致显示尽可能多的选项,只要选择的高度允许。
$(function(){
    alert($('#items option:visible').length);
});