почему новый jquery on ('change') не срабатывает на iOS, а работает на Android? - PullRequest
3 голосов
/ 01 марта 2012

Я пытаюсь обновить фрагмент кода до нового метода jquery on (). У меня есть таблица и поле выбора. Я хочу заполнить поле выбора одной опцией для каждой ячейки заголовка таблицы, которая работает нормально.

Затем я хочу переключать ячейки заголовка в зависимости от выбранных опций. Это работает на настольных ПК и Android, но не на iPad.

Вот что я делаю:

$('table th').each(function(i) {

  // add option to select box for each table column
  var toggle = $('<option value="'+id+'">'+th.text()+'</option>');
  $('select#toggle').append(toggle); }      

  // set up options
  $('select#toggle').one("updateCheck", function(){     
     console.log("th-setup");       
     // if condition, then select, otherwise don't select
     }).trigger("updateCheck");

  });


  // listen for select changes
  $('select#toggle').on('change', function() {  
     console.log("change detected");
     })

HTML

<select id="toggle"></select>

<table class="sample">
  <thead>
    <tr>
     <th>one</th>
     <th>two</th>
     <th>three</th>
     <th>four</th>
   </tr>
  </thead>
</table>    

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

 $(document).on('change',$('select#toggle'), function(...)

но это просто сбивает мой iPad перед отображением страницы.

Может кто-нибудь сказать мне, если я делаю что-то не так и почему выбор опции не вызывает событие изменения на iPad по сравнению с срабатыванием события на Android и на рабочем столе?

Спасибо за подсказки!

1 Ответ

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

Должно быть:

$('body').on('change', '#toggle', function() { ... });

Первый аргумент - это список имен событий. Вторая строка выбора (не объект jQuery). Третье - это функция обработчика.

Нет необходимости указывать ссылку на идентификатор в селекторе с типом узла.

...