javascript - $(document).click() 在 iPhone 上无法正常工作。查询

标签 javascript jquery iphone click onclick

<分区>

此功能在 IE、Firefox 和 Chrome 上完美运行,但在 iPhone 上,它仅在单击 <img> 时可用。 .单击页面(除 img 之外的任何地方)不会触发该事件。

$(document).ready(function () {
  $(document).click(function (e) {
    fire(e);
  });
});

function fire(e) { alert('hi'); }

HTML 部分非常基础,应该不是问题。

有什么想法吗?

最佳答案

简答:

<style>
    .clickable-div 
    {
         cursor: pointer;
    }
</style>

更长的答案:

重要的是要意识到,如果您只是使用 <a>标记一切都会按预期工作。您可以在常规上错误地单击或拖动 <a>在 iPhone 上链接,一切都如用户所期望的那样。

我想您有不可点击的任意 HTML - 例如包含无法用 <a> 包裹的文本和图像的面板.当我有一个我想要完全可点击的面板时,我发现了这个问题。

<div class='clickable-div' data-href="http://www.stackoverflow.com">

 ... clickable content here (images/text) ...

</div>

为了检测此 div 中任何位置的点击,我使用带有 data-href 的 jQuery html 属性,如上所示(此属性是我自己发明的,不是标准的 jQuery 或 HTML 数据属性。)

$(document).on('click', '.clickable-div', function() {

    document.location = $(this).data('href');

});

无论您点击多少次,这都适用于您的桌面浏览器,但不适用于 iPad。

您可能想将事件处理程序从 click 更改为至 click touchstart - 这确实触发了事件处理程序。然而,如果用户想要向上拖动页面(滚动),他们也会触发它——这是一种糟糕的用户体验。 [您可能已经通过偷偷摸摸的横幅广告注意到了这种行为]

答案非常简单:只需设置 css cursor: pointer

<style>
    .clickable-div 
    {
         cursor: pointer;
    }
</style>

这为桌面用户带来了额外的好处,可以用手形图标指示该区域是可点击的。

感谢https://stackoverflow.com/a/4910962/16940

关于javascript - $(document).click() 在 iPhone 上无法正常工作。查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3705937/

相关文章:

javascript - 在 ui-router 中的状态之间共享 ng-model 数据

javascript - 使用代码中的模板实例化 WinJS.UI.ListView 时出错

javascript - 如何完全在另一个 div 的边界内创建一个 div?

iphone - -[CALayer释放] : message sent to deallocated instance

ios - 为什么我的刷新控件保留了我的 UIViewController?

javascript - 当 HTMLElement.onclick 事件调用时,在其函数中获取对象的属性 - javascript

javascript - 错误: A valid React element (or null) must be returned (Checked Return() and Render())

javascript - 无法从函数返回值

javascript - 如何更改点击提交值

ios - 想要将来自推特的好友列表显示到 iPhone 应用程序中