.on("click") 在 iOS 上不起作用

Posted

技术标签:

【中文标题】.on("click") 在 iOS 上不起作用【英文标题】:.on("click") does not work on iOS 【发布时间】:2013-04-22 19:03:17 【问题描述】:

我注意到了

$("body").on("click", "#id", function(event) ...

ios 上不起作用

$("#id").on("click", function(event) ...

完美运行。相同的站点,相同的 jQuery(最新),相同的 DOM。我不能使用后者,因为#id 是动态添加的。

想法?

【问题讨论】:

No problems here。也许问题出在代码的其他地方。如果您将 iOS 设备连接到 Mac,则可以使用桌面 Safari 在移动 Safari 中查看控制台错误:developer.apple.com/library/ios/#documentation/… 我这样做了,并且总是在我的 mac 上使用 safari 进行调试。 @PalashMondal 解决了我的问题。 【参考方案1】:

尝试如下一次:

$(document).on("click touchstart", "#id", function(event) ...

【讨论】:

只是好奇-使用document而不是body有什么效果? 我这一天的英雄 :) 改用“touchend”,因为这感觉更自然......谢谢!【参考方案2】:

如果你想添加点击而不使用触摸事件,你可以这样做(虽然它确实涉及代理嗅探):

// Check if it is iOS
var isiOS = (navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? true : false);

if(isiOS === true) 

    // Store -webkit-tap-highlight-color as this gets set to rgba(0, 0, 0, 0) in the next part of the code
    var tempCSS = $('a').css('-webkit-tap-highlight-color');

    $('body').css('cursor', 'pointer')                                    // Make iOS honour the click event on body
             .css('-webkit-tap-highlight-color', 'rgba(0, 0, 0, 0)');     // Stops content flashing when body is clicked

    // Re-apply cached CSS
    $('a').css('-webkit-tap-highlight-color', tempCSS);


在http://www.texelate.co.uk/blog/post/124-add-a-click-event-to-html-or-body-on-ios-using-jquery/查看更多信息

【讨论】:

以上是关于.on("click") 在 iOS 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

jQuery的("#Id").click(function(){})和("#Id").on("click",function(){})的区别

事件绑定方法和性能 $(document).on("click", "#id", fn) VS $("#id").on("clic

向 on("click") 函数添加参数 [重复]

vue教程1-04 事件 v-on:click="函数"

jquery bind event, use on. $(document).on("click","#a",function(){alert}) [#d(代码

vuejs v-on="click"为啥会刷新页面