3

我有一个为汽车仪表板显示单元构建的 HTML5/JavaScript 应用程序,我被要求移植到浏览器中运行。

简单的任务,做了一些简单的更改,现在在我尝试过的每个桌面浏览器中一切正常。

然后,问题来了。出于演示目的,我被要求特别确保它可以在 iPad 上运行。

问题:

该应用程序使用单页导航,当用户导航到不同的“屏幕”时,使用 jQuery.load 加载必要的页面片段。然而,所有的 jQuery 绑定都集中在一个地方,因此它们在应用程序启动时执行,即使它们绑定的元素可能还不存在于 DOM 中。

使用 jQuery.live 或 .on 很好,因为它们允许绑定到未来的 DOM 元素。至少在桌面浏览器中。

在 Mobile Safari 中,.live/.on 根本不适用于绑定到尚不存在的元素。

我有一个例子来说明这个问题:http: //dhines.com/jquery-test/

请注意,所有“应该工作”链接都可以在桌面浏览器中使用,但在 Mobile Safari 中则不行!

环顾网络和 SO,我发现的唯一解决方案是将 onclick="function(){}" 添加到我的所有可点击元素中。这似乎很愚蠢。

我看到的另一个选择是分散我的绑定并让它们发生在它们适用的特定片段上,但是考虑到大量的片段和绑定,这不会很有趣。

看看我的例子,谁能给我一个更好的解决方案?或者也许指出我是否使用 .load 不正确或什么?

4

1 回答 1

1

我无法对此进行测试(我没有苹果产品),但是我发现了关于 jquery 票证系统的讨论:

http://bugs.jquery.com/ticket/5677#comment:7

诀窍似乎是将 { cursor : pointer } 添加到我已经看到您的示例未定义此 css 属性的元素。试试这个...

也许 Apple Safari 开发人员认为单击事件对没有 curosr:pointer 的元素没有意义。

于 2012-08-31T21:34:16.337 回答