Как я могу снять несколько вариантов выбора поля по классу с помощью jquery? - PullRequest
1 голос
/ 22 марта 2012

У меня есть несколько полей множественного выбора с одним и тем же классом, и я хочу отменить выбор всех для события. У них есть все div с одинаковым классом class_for_all_multi_selects вокруг них.

$("#element_to_uncheck_all_options").change(function() {
  $('.class_for_all_multi_selects'). ...?
});

<div class="class_for_all_multi_selects">
  <select multiple="multiple" name="1">
    <option value="1">option1</option>
    <option value="2">option2</option>
  </select>
</div>

<div class="class_for_all_multi_selects">
  <select multiple="multiple" name="2">
    <option value="1">option1</option>
    <option value="2">option2</option>
  </select>
</div>

Как снять флажок с нескольких вариантов выбора в зависимости от класса с помощью jquery?

Ответы [ 6 ]

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

Вы также можете попробовать это, используя prop:

 $("div.class_for_all_multi_selects option:selected").prop('selected',false);

проверить это: http://jsfiddle.net/EVrrz/3/

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

Используйте removeAttr(), чтобы удалить выбранный атрибут из всех опций

$('select option:selected').removeAttr("selected");

Поскольку вы сказали, что #element_to_uncheck_all_options - это div, вам следует связать с click событиями вместо change

$("#element_to_uncheck_all_options").click(function() {
   $('select option:selected').removeAttr("selected");
});
2 голосов
/ 22 марта 2012

Использование removeAttr:

$("#element_to_uncheck_all_options").click(function() {
    $("div.class_for_all_multi_selects option:selected").removeAttr("selected");
});

И поскольку вы хотите снять отметку всех элементов, вместо change.

используйте click (с кнопкой или чем-то еще).
1 голос
/ 22 марта 2012

Вот как я бы, вероятно, сделал это:

$('#selectAll').change(function() {
    $('.class_for_all_multi_selects option').prop('selected', this.checked);
});

Вот jsfiddle для демонстрации.Это реализует выбор всех / отмена выбора всех, но вы можете сделать это, просто отменив выбор, установив вместо этого this.checked в false.

1 голос
/ 22 марта 2012

Не проблема.

$("#element_to_uncheck_all_options").click(function() {
    $(".class_for_all_multi_selects option").attr("selected", false);
});​

Сейчас проверено и работает:)

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

Может просто изменить значение выбора на пустое значение, а jQuery обработает все остальное, цикл не требуется

 $('.class_for_all_multi_selects select').val('');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...