$ ("опция # id"). hide ();не работает на сафари / хром? - PullRequest
3 голосов
/ 22 марта 2012

То же для:

$("#id option").show();

Я просто удивлен. Я думал, что что-то пошло не так с моим кодом. Я попробовал это с пустым HTML:

<select id = "name">
  <option>1</option>
  <option>2</option>
</select>

Javascript:

​$("#name option").hide();​

http://jsfiddle.net/kgLkt/

Он работает как шарм с Firefox, но не на сафари и не на Chrome!

Есть ли замена?!

EDIT: Мне нужно скрыть / показать параметр (или некоторые из них), чтобы они не появлялись в списке.

Ответы [ 5 ]

13 голосов
/ 22 марта 2012

Чтобы скрыть:

var myOpts = $("#id option").detach();

Показать:

$("#id option").append(myOpts);

В отличие от .remove(), .detach() сохраняет все данные jQuery, связанные с удаленными элементами.

0 голосов
/ 22 марта 2012

Вы не выбрали jQuery в скрипке.В любом случае вам нужно установить selectedIndex из <select> в -1, чтобы очистить выбранный в данный момент параметр: http://jsfiddle.net/kgLkt/2/.

$("#name option").hide().parent().prop("selectedIndex", -1);​​​​​​
0 голосов
/ 22 марта 2012

Это будет работать на сафари

   var select = $('#name');
    var diff = 0;
    console.dir(select[0].options);
    select.find('option').each(function(x) {
        select[0].options[x+diff] = null;
        diff -= 1;
    });
0 голосов
/ 22 марта 2012

Хммм. Может быть проблема с реализацией ...

Возможно, попробуйте

$("#name option").remove();

если вам нужно что-то узнать о том, что было удалено, то перед загрузкой загрузите их в переменную.

var $opts = $("#name option");

затем вы можете использовать индекс для добавления их обратно в:

$("#name").append( $opts.eq(n) );
0 голосов
/ 22 марта 2012

Со стандартным выбором я не думаю, что есть какой-либо кросс-браузерный способ скрыть опцию выбора.

Вы можете найти пользовательский элемент управления для выбора или сохранить полный список элементов в отдельной переменной и удалять / добавлять элементы из выбора по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...