Скрыть опцию выбора в IE с помощью jQuery

В настоящее время я использую jQuery, чтобы скрыть / показать select $ ( "# custcol7 option [value =" + sizeValue + "]" ). hide (); используя следующий код.

span

Это отлично работает в Firefox, но не делает ничего хорошего в других браузерах. Как скрыть параметры от выбора в Chrome, Opera и IE?

javascript,jquery,html-select,

50

Ответов: 17


Я просто наткнулся на это и вместо того, чтобы клонировать весь выбор снова и снова, я просто заменил параметры, которые нужно скрывать с spanэлементами и скрывать промежутки (хотя браузер не видел их в любом случае, я думаю), вам может потребоваться изменить ваш код (если он сложный), чтобы перебирать промежутки для сложной логики.

Пролеты хранят ссылку на optionнее и заменяют ее, когда они должны отображаться.

Этот код, очевидно, может быть реорганизован и преувеличен.

http://fiddle.jshell.net/FAkEK/12/show/

EDIT # 2 (ИСПОЛЬЗУЙТЕ ЭТО ВМЕСТО): Мне пришло в голову, что вместо того, чтобы делать все это клонирование / ссылка / заменить дерьмо, просто оберните опцию с помощью span, скройте диапазон, а на шоу просто замените диапазон с помощью опции снова. ,

http://fiddle.jshell.net/FAkEK/25/show/


25

Я думаю, медисер предоставил действительный ответ, и здесь он слегка изменился, чтобы отразить то, что работает для меня:

$.fn.optVisible = function( show ) {
    if( show ) {
        this.filter( "span > option" ).unwrap();
    } else {
        this.filter( ":not(span > option)" ).wrap( "<span>" ).parent().hide();
    }
    return this;
}

Протестировано с помощью (в реальном времени BrowserStack):

  • Windows XP: IE 6.0, Firefox 3.0, Safari 4.0, Opera 10.0, Chrome 14.0
  • Windows 8: IE 10.0 Metro
  • iOS 3.2 (iPad), iOS 6.0 (iPhone 5)
  • Android 1.6 (Sony Xperia X10)

jsfiddle


10

Вы этого не делаете, он не поддерживается в IE (и, предположительно, не в Chrome или Opera). Вам нужно будет удалить все варианты и добавить их позже, если вы хотите, чтобы они были действительно невидимыми. Но в большинстве случаев простой disabled="disabled"должен быть достаточным и сложнее, чем обработка удаления и добавления опций.


9

попробуйте отсоединить (). вы можете повторно подключить его позже, если необходимо, с помощью append () или insertAfter ()


Для удаления опций используйте:

var opt=$("option").detach();

Чтобы показать варианты, используйте:

opt.appendTo( "select" );
JavaScript, JQuery, HTML-выберите,
Похожие вопросы