jQuery“visible”在所有浏览器中都不起作用,但在Firefox中不起作用

时间:2011-10-19 11:47:40

标签: jquery firefox jquery-selectors cross-browser

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

它仅适用于Firefox。换句话说,似乎$('#select-tag-id option:visible')在其他浏览器中不起作用。怎么了?这是一个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>

和JavaScript(jQuery代码)是:

$(function(){
    alert($('#items option:visible').length);
});

2 个答案:

答案 0 :(得分:4)

这不是一个jQuery错误 - 只是(又一个)浏览器的区别。

IE不允许您在选项元素(style.display='none' doesnt work on option tags)上设置display:none

如果你在FF和IE中查看你的小提琴,你会发现<select>仍然包含IE中的所有四个元素,但只有两个在FF中,无论jQuery如何在场。

解决方案可能是实际删除元素并在需要时替换。

答案 1 :(得分:2)

事实上,:hidden:visible不适用于<option>

您可以尝试使用disabled="disabled",请参阅:

http://jsfiddle.net/sZR2f/7/