为什么隐藏"选择"选项?

Iva*_*van 12 html jquery jquery-selectors

我有这样的HTML选择:

<select name="something">
    <option value="a">1</option>
    <option value="b">2</option>
    <option value="c">3</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我注意到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>
Run Code Online (Sandbox Code Playgroud)

如果我执行这个:

$("#f :hidden").remove();
Run Code Online (Sandbox Code Playgroud)

所有选项都被删除.问题是为什么jquery删除选项?什么是最合适的选择,除去隐藏标签?(是否有选项标签)

这是一个测试.

Jos*_*kle 11

您可以添加应该已存在的功能:P

$("#f :hidden:not(option)").remove();
Run Code Online (Sandbox Code Playgroud)


thi*_*dot 8

看看这个jQuery错误报告:http://bugs.jquery.com/ticket/6293

特别值得注意的是

由john
于3个月前更改状态从打开更改为已关闭
分辨率设置为wontfix

考虑到每个浏览器,但Firefox说它是隐藏的 - 似乎它是相反的方式.话虽这么说,我真的不确定你想要实现的目标:隐藏/:在选项元素上可见.看起来你应该使用:改为选择.不要以为这是我们将要花费很多周期的事情.

作为这种情况的修复,我会选择@Joseph已经提供的内容:

$("#f :hidden:not(option)").remove();
Run Code Online (Sandbox Code Playgroud)

..的工作原理如下:http://jsfiddle.net/thirtydot/G4Qnr/4/