У меня есть объект с парами параметров ключ / значение, которые я хочу скрыть / удалить из списка выбора. Ни один из следующих селекторов опций не работает. Что мне не хватает?
$.each(results['hide'], function(name, title) {
$("#edit-field-service-sub-cat-value option[value=title]").hide();
$("#edit-field-service-sub-cat-value option[@value=title]").hide();
});
jquery
html-select
Hitfactory
источник
источник
Ответы:
Как бы то ни было, второй формы (с
@
) не существует в jQuery 1.3. Первый не работает, потому что вы, очевидно, ожидаете интерполяции переменных. Попробуй это:Обратите внимание, что это, вероятно, будет ломаться различными отвратительными способами, если
title
содержит метасимволы селектора jQuery.источник
Вы не можете сделать это x-browser. Если я помню, то есть проблемы. Проще всего сохранить клонированную копию выбранного элемента перед удалением элементов, это позволяет легко удалить, а затем снова добавить отсутствующие элементы.
источник
Я нашел способ получше, и он очень простой:
Чтобы показать еще раз, просто найдите этот вариант (не диапазон) и
$("option_you_want_to_show").unwrap()
.Он был протестирован в Chrome и Firefox.
источник
$("select").val("0").trigger("change")
. Легче решение этоВот мой поворот, вероятно, немного быстрее из-за собственных методов DOM
источник
Это работает в Firefox 3.0, но не в MSIE 8 и Opera 9.62:
Но вместо того, чтобы скрыть параметр, его можно просто отключить:
Первая из двух вышеперечисленных строк предназначена для Firefox и передает фокус второй опции (при условии, что она имеет значение = "2"). Если мы его опустим, параметр будет отключен, но по-прежнему отображается параметр «включен», прежде чем мы его опустим. Следовательно, мы переключаем фокус на другой вариант, чтобы избежать этого.
источник
Это МОЖЕТ быть сделано через браузер; это просто требует специального программирования. Пожалуйста, посмотрите мою скрипку на http://jsfiddle.net/sablefoste/YVMzt/6/ . Он был протестирован для работы в Chrome, Firefox, Internet Explorer и Safari.
Короче говоря, у меня есть скрытое поле, в
#optionstore
котором массив хранится последовательно (поскольку в JavaScript не может быть ассоциативных массивов). Затем, когда вы меняете категорию, он анализирует существующие параметры (только в первый раз), записывает их#optionstore
, стирает все и возвращает только те, которые связаны с категорией.ПРИМЕЧАНИЕ: я создал это, чтобы разрешить различные значения параметров из текста, отображаемого пользователю, поэтому он очень гибкий.
HTML:
JavaScript / jQuery:
источник
resultgood
просто проверка, не было лиoptionlisting
добавлено. если это так,<option>
возвращается список s. В противном случае ничего не возвращается, чего бы вы хотели, если бы вы случайно включили класс, которого на самом деле не было (в этом примере, скажем, sub-Food6). Чтобы вернуть пробел в раскрывающемся списке, измените строку объявления в начале функции наvar optionlisting="<option value=''></option>";
.data
атрибут; это более семантически правильно.Лучше всего установить disabled = true для элементов параметров, которые вы хотите отключить, а затем установить CSS
Таким образом, даже если браузер не поддерживает скрытие отключенного элемента, его все равно нельзя выбрать ... но в браузерах, которые его поддерживают, они будут скрыты.
источник
Взгляните на этот вопрос и ответы -
Отключить параметры выбора ...
Глядя на ваш код, вам может потребоваться указать значение атрибута
из селекторов атрибутов jQuery
РЕДАКТИРОВАТЬ:
Только что понял, что вы получаете заголовок из параметра функции, и в этом случае синтаксис должен быть
источник
Что касается предложения redsquare, в итоге я сделал следующее:
а затем отменить это:
источник
Проблема в том, что Internet Explorer, похоже, не поддерживает методы скрытия и отображения для выбора параметров. Я хотел скрыть все параметры моего выбора ddlReasonCode, у которых не было текущего выбранного типа в качестве значения атрибута "attType".
В то время как прекрасный Chrome был вполне доволен:
Это то, что требовалось IE (дети, не пробуйте это в CHROME :-)):
Я нашел эту идею упаковки на http://ajax911.com/hide-options-selecbox-jquery/
источник
После тестирования решения, опубликованные выше различными, включая хаос, для скрытия элементов теперь работают в последних версиях Firefox (66.0.4), Chrome (74.0.3729.169) и Edge (42.17134.1.0).
Для IE это не работает, однако вы можете отключить опцию
а затем принудительно выбрать другое значение.
Обратите внимание, что для отключенного параметра значение раскрывающегося списка теперь будет нулевым, а не значением выбранного параметра, если он отключен.
источник
Похоже, вам тоже нужно обновить атрибут "selected". В противном случае текущий выбранный параметр может продолжать отображаться - хотя он, вероятно, исчезнет, когда вы действительно перейдете к выбору параметра (это то, что он сделал для меня): Попробуйте сделать это:
источник
Я пытался скрыть параметры из одного списка выбора на основе выбранного варианта из другого списка выбора. Он работал в Firefox3, но не в Internet Explorer 6. У меня здесь есть несколько идей и решение, поэтому я хотел бы поделиться:
Код JavaScript
HTML
Проверено, что он работает в Firefox 3 и Internet Explorer 6.
источник
id
, атрибут должен быть уникальным: ID = Этот атрибут присваивает имя элемента. Это имя должно быть уникальным в документе.Чтобы избежать конкатенации строк, вы можете использовать jQuery.grep
источник
Наверное, не такой элегантный или многоразовый, как плагин jquery. но другой подход - просто сохранить элементы опций и при необходимости поменять их местами:
сделайте это, чтобы использовать объект:
источник
Затем в вашем CSS убедитесь, что у вас есть
источник
Я реализовал решение, используя функцию, которая фильтрует combobox (
<select>
) на основе настраиваемых атрибутов данных. Это решение поддерживает:<option>
чтобы показать, когда фильтр оставит выбор пустым.<option>
элементы без атрибута data-filter остаются нетронутыми.Протестировано с jQuery 2.1.4 и Firefox, Chrome, Safari и IE 10+.
Это пример HTML:
Код jQuery для фильтрации:
Чтобы использовать его, вы просто вызываете функцию со значением, которое хотите сохранить.
Тогда результирующий выбор будет:
Исходные элементы сохраняются функцией data (), поэтому последующие вызовы будут добавлять и удалять правильные элементы.
источник
Ответ указывает, что
@
это недопустимо для новых итераций jQuery. Хотя это правильно, некоторые старые IE по-прежнему не скрывают элементы параметров. Для тех, кому приходится иметь дело с скрытыми элементами опций в затронутых версиях, я опубликовал обходной путь здесь:http://work.arounds.org/issue/96/option-elements-do-not-hide-in-IE/
В основном просто оберните его промежутком и замените на выставке.
источник
Любой, кто сталкивается с этим вопросом, может также рассмотреть возможность использования Chosen , который значительно расширяет возможности select.
источник
Я знаю, что на этот вопрос есть ответ. Но мое требование было немного другим. Вместо значения я хотел фильтровать по тексту. Итак, я изменил ответ @William Herry следующим образом.
Таким образом, вы также можете использовать значение, заменив содержит, как это
источник
Для опции скрытия при выборе используйте:
Где option_node - HTMLOptionElement
PS: Я не использую JQuery, но предполагаю, что он будет работать:
источник
Я решил, что лучше всего полностью удалить DOM.
Кроссбраузерная совместимость. Работает и с IE11
источник
option: eq (0) - скрыть параметр с индексом «0» в поле выбора.
источник
Вы можете показать / скрыть с помощью значения или имени класса . Проверьте ссылку ниже с рабочим примером.
Показать / скрыть выбранные параметры jquery со значением или с именем класса.
источник
$ ("# ddtypeoftraining option [value = 5]"). css ("display", "none"); $ ('# ddtypeoftraining'). selectpicker ('обновить');
источник