我通常使用表单来绑定(bind)点击处理程序,
$(document).on('click', 'element', function() { ... });
以避免以后加载元素的问题。在桌面浏览器(和Chrome模仿iPhone的Chrome)上,这可以正常工作,但是在实际的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
,这不是您的情况)