我有这样的HTML选择:
<select name="something">
<option value="a">1</option>
<option value="b">2</option>
<option value="c">3</option>
</select>
我注意到jquery解释了选项是隐藏的HTML标记。当我必须删除像这个例子中的真正隐藏标签时,问题出现了:
<form action="#" id="f">
<select name="something">
<option value="a">1</option>
<option value="b">2</option>
<option value="c">3</option>
</select>
<p style="display:none">hello world</p>
<any_tag style="display:none">some text</any_tag>
</form>
如果我执行此操作:
$("#f :hidden").remove();
删除所有选项。问题是为什么jquery删除选项?什么是最适合删除 隐藏代码的选择器? (选择标签是否好)
这是a test。
答案 0 :(得分:11)
您可以添加应该存在的功能:P
$("#f :hidden:not(option)").remove();
答案 1 :(得分:8)
查看此jQuery错误报告:http://bugs.jquery.com/ticket/6293
特别值得注意的是:
3个月前由john
改变了 状态从打开变为关闭 分辨率设置为wontfix考虑到每个浏览器,但Firefox 说这是隐藏的 - 似乎是另一种方式。那 如果说,我不确定你想要实现的目标 :hidden /:在选项元素上可见。你好像应该这样 使用:改为选择。不要以为这是我们的事 会花很多时间。
作为这种情况的解决方案,我会选择@Joseph已经提供的内容:
$("#f :hidden:not(option)").remove();
答案 2 :(得分:2)
尝试:
$(":hidden").not("option")
答案 3 :(得分:0)
在这种情况下,您可以简单地将隐藏元素包装在某种容器中,并使用jQuery从容器中删除元素:
<div id="foo">
<p style="display:none;">hello world</p>
</div>
然后,在jQuery中你可以这样做:
$("#foo :hidden").remove();
修改强>
这是另一种方法:
$("#f :hidden").not("option").remove();
答案 4 :(得分:0)
不确定原因,但您可以使用:not jQuery selector来补救。
$("#f :not(option):hidden").remove();