Что не так с этой привязкой jQuery для списка ВЫБОРА?

#jquery #asp.net-mvc-3 #model-view-controller

#jquery #asp.net-mvc-3 #модель-представление-контроллер

Вопрос:

У меня есть несколько списков выбора на странице. Все они названы в виде массива, чтобы они передавались обратно на контроллер в списке для viewmodel. Когда они отображаются, они выглядят как таковые:

 <select id="OrderItemViewModels_2__OrderItemStatusId" name="OrderItemViewModels[2].OrderItemStatusId"><option value="-1"></option>
<option value="1">CONFIRMED</option>
<option value="2">NO SALE</option>
<option value="3">PENDING</option>
</select>
  

Я пытаюсь привязать к ним обработчики событий .change(), чтобы я мог вызвать вызов .ajax для заполнения другого выпадающего списка на основе значения этого, но привязка не работает. JS выглядит так:

  $(document).ready(function () {
      $('select[name$="OrderItemStatusId"]').each(function (){
        //alert(this.name);
        var dropdown = this;
        dropdown.change(function() {
          alert('testing ');
          //GetOrderItemReasons(dropdown.val());
        });
      });
  

Ошибка, которую я получаю: «Объект не поддерживает это свойство или метод». Но первое предупреждение ясно показывает, что элемент выбирается, потому что он правильно отображает имя.

Что я здесь делаю не так?

Комментарии:

1. попробуйте использовать dropdown.live('change', function() {})

Ответ №1:

Изменить:

 var dropdown = this;
  

Для:

 var dropdown = $(this);
  

change() — это метод объекта jQuery, поэтому вам нужно обернуть this вызов в jQuery() or $() .