我通常使用表单来绑定(bind)点击处理程序,

$(document).on('click', 'element', function() { ... });

以避免以后加载元素的问题。在桌面浏览器(和Chrome模仿iPhone的Chrome)上,这可以正常工作,但是在实际的iPhone上,这却无法工作(我尝试了solutions,例如“cursor: pointer;”)

我注意到使用标准单击处理程序的另一个按钮正在工作。我更改了新按钮的使用方式
$('element').click(function() { ... });

它开始工作。为什么这两种应用点击处理程序的方法在iOS上的运行方式不同?

最佳答案

我查看了jquery源代码,它们是相同的(.clickon('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,这不是您的情况)

10-05 21:07
查看更多