Как получить значение не выбранной опции? - PullRequest
0 голосов
/ 25 марта 2020

Предположим, у меня есть выборка, подобная этой:

<select id="cars" multiple>
  <option value="1">Ferrari</option>
  <option value="2">Lamborghini</option>
</select>

Теперь представьте, что выбраны оба значения, я отменяю выбор Ferrari, как я могу получить значение отмененного выбора, поэтому в этом случае Ferrari?

Я пытался с:

$('#cars option').on('click', function(){
    console.log($(this).val());
});

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

1 Ответ

1 голос
/ 25 марта 2020

Вы можете включить использование класса для отслеживания изменений, какие элементы выбраны, и, наоборот, какие элементы больше не выбраны.

var $cars = $('#cars').on('change', function(){
  // find the options that were selected, but are not now
  var $deselected = $cars.find('option.selected:not(:checked)');
  
  // add the selected class to the selected options for tracking
  $cars.find('option:checked').addClass('selected');
  // remove the selected class to untrack them
  $deselected.removeClass('selected');
  
  // report which options were deselected
  console.log($deselected.get());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="cars" multiple>
  <option value="1">Ferrari</option>
  <option value="2">Lamborghini</option>
</select>
...