我制作了一个非常简单的小提琴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);
});
答案 0 :(得分:4)
这不是一个jQuery错误 - 只是(又一个)浏览器的区别。
IE不允许您在选项元素(style.display='none' doesnt work on option tags)上设置display:none
。
如果你在FF和IE中查看你的小提琴,你会发现<select>
仍然包含IE中的所有四个元素,但只有两个在FF中,无论jQuery如何在场。
解决方案可能是实际删除元素并在需要时替换。
答案 1 :(得分:2)