我有一个为汽车仪表板显示单元构建的HTML5 / JavaScript应用程序,我被要求移植到浏览器中运行。
简单的任务,做了一些简单的更改,现在我尝试过的每个桌面浏览器都能正常运行。
然后,出现了问题。我被要求专门确保它可以在iPad上运行以用于演示目的。
问题:
该应用程序使用单页导航,当用户导航到不同的“屏幕”时,使用jQuery.load加载必要的页面片段。但是,所有jQuery绑定都集中在一个位置,以便它们在应用程序启动时执行,即使它们绑定到的元素可能尚未存在于DOM中。
使用jQuery.live或.on这很好,因为它们允许绑定到未来的DOM元素。至少在桌面浏览器中。
在Mobile Safari中,.live / .on根本无法绑定到尚不存在的元素。
我有一个例子来说明这个问题:http://dhines.com/jquery-test/
请注意,所有'SHOULD WORK'链接都可以在桌面浏览器中使用,但不适用于Mobile Safari!
浏览网页和SO,我发现的唯一解决方案是将onclick =“function(){}”添加到我的所有可点击元素中。这看起来很蠢。
我看到的另一个选择是分散我的绑定并将它们放在它们适用的特定片段上,但是如果有大量的片段和绑定,这将不会很有趣。
看看我的例子,有人能为我提供更好的解决方案吗?或者也许指出我是否正在使用.load错误或其他什么?
答案 0 :(得分:1)
我无法测试这个(我没有苹果产品),但我找到了关于jquery票证系统的讨论:
http://bugs.jquery.com/ticket/5677#comment:7
诀窍似乎是将{cursor:pointer}添加到我看到的元素中,你的示例没有定义这个css属性。试一试......
也许Apple Safari开发人员认为点击事件对没有curosr:指针的元素没有意义。