我通常使用表单绑定点击处理程序,
$(document).on('click','element',function() { ... });
以避免稍后加载元素的问题.这在桌面浏览器(和Chrome模拟iPhone)上正常工作,但在实际的iPhone上这不起作用(而且我尝试了solutions像“cursor:pointer;”)
我注意到另一个按钮正在使用标准的点击处理程序.我改变了我的新按钮来使用
$('element').click(function() { ... });
并开始工作.为什么在iOS上应用点击处理程序的两种方式不同?
解决方法
我查看了jquery源代码,它们是一样的(两个.click和on(‘click’)使用相同的功能,即.on.
.点击
jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + "mousedown mouseup mousemove mouSEOver mouSEOut mouseenter mouseleave " + "change select submit keydown keypress keyup contextmenu" ).split( " " ),function( i,name ) { // Handle event binding jQuery.fn[ name ] = function( data,fn ) { return arguments.length > 0 ? this.on( name,null,data,fn ) : this.trigger( name ); }; } );
如你所见,$.click最终会调用.on(或.trigger,如果没有参数,这不是你的情况)