Ответ 1
Вы можете просто добавить функциональность, которая уже должна быть: P
$("#f :hidden:not(option)").remove();
У меня есть 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 удаляет параметры? и что является наиболее подходящим селектором для удаления скрытых тегов только? (ну или не теги опций)
Вот тест.
Вы можете просто добавить функциональность, которая уже должна быть: P
$("#f :hidden:not(option)").remove();
Проверьте этот отчет об ошибке jQuery: http://bugs.jquery.com/ticket/6293
Особо следует отметить:
Изменено 3 месяца назад от john
Статус изменен с открытого на закрытый Разрешение установлено на wontfixУчитывая, что каждый браузер, кроме Firefox говорит, что он скрыт - похоже, наоборот. Что я не уверен, что вы пытаетесь достичь с помощью: hidden/: отображается на элементах опции. Похоже, вы должны, вероятно, используйте: вместо этого выберите. Не думайте, что это то, что мы собирается провести много циклов.
В качестве исправления для этого случая я бы пошел на то, что уже предоставил @Joseph:
$("#f :hidden:not(option)").remove();
.., который работает по назначению: http://jsfiddle.net/thirtydot/G4Qnr/4/
Try:
$(":hidden").not("option")
В этом случае вы можете просто обернуть скрытые элементы в каком-либо контейнере и использовать jQuery для удаления элементов из контейнера:
<div id="foo">
<p style="display:none;">hello world</p>
</div>
Затем в jQuery вы можете просто сделать это:
$("#foo :hidden").remove();
ИЗМЕНИТЬ
Здесь другой подход:
$("#f :hidden").not("option").remove();
Не уверен, почему, но вы можете исправить это с помощью селектора: not jQuery.
$("#f :not(option):hidden").remove();