Почему моя функция выбора через индекс, а не .val, не работает? - PullRequest
0 голосов
/ 28 февраля 2020

Почему я всегда получаю "область сортировки" в качестве обратной связи при обоих вариантах? В чем моя неудача?

$('select[name="sorting"]').change(function(){
    if ($(this).index = 0){
        alert("sort country");
    }
    else if ($(this).index = 1){
        alert("sort area");
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

<select name="sorting">
      <option value="" class="country" selected>Country</option>
      <option value="" class="area">Area</option>
    </select>

1 Ответ

3 голосов
/ 28 февраля 2020

В вашем коде есть пара проблем. Сначала = используется для установки значения. Чтобы сравнить значения, которые вам нужно использовать == или ===, в зависимости от того, как вы хотите / должны принудить типы данных.

Во-вторых, вы смотрите на индекс select элемент в DOM, а не индекс option, который был выбран. Таким образом, вам нужно использовать find() в обработчике событий, чтобы получить выбранный option и получить его index(). Попробуйте это:

$('select[name="sorting"]').change(function() {
  var idx = $(this).find('option:selected').index();
  if (idx === 0) {
    console.log("sort country");
  } else if (idx === 1) {
    console.log("sort area");
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="sorting">
  <option value="" class="country" selected>Country</option>
  <option value="" class="area">Area</option>
</select>
...