为什么新的jquery on('change')不会在iOS上启动,而它适用于Android?

fre*_*ent 3 javascript jquery event-handling jquery-mobile jquery-events

我正在尝试将一段代码更新为新的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");
     })
Run Code Online (Sandbox Code Playgroud)

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>    
Run Code Online (Sandbox Code Playgroud)

我首先尝试将以下代码绑定到文档,如下所示:

 $(document).on('change',$('select#toggle'), function(...)
Run Code Online (Sandbox Code Playgroud)

但这只是在页面显示之前崩溃我的iPad.

有人可以告诉我,如果我做错了什么,为什么选择一个选项不会触发iPad上的更改事件而不是在Android和桌面上触发一个?

谢谢你的提示!

Poi*_*nty 6

它应该是:

$('body').on('change', '#toggle', function() { ... });
Run Code Online (Sandbox Code Playgroud)

第一个参数是事件名称列表.第二个是选择器字符串(不是jQuery对象).第三个是处理函数.

没有必要使用节点类型限定选择器中的标识符引用.