jQuery toggle()在iOS上不起作用

时间:2014-12-15 01:40:30

标签: jquery ios iphone animation

TL; DR版本在底部!

我正在为大学课程的最后一个项目工作,但它也恰好是一个有用的工具,旨在从我想制作的工作中使用移动设备(特别是智能手机)可用于同事。

但经过几个小时的研究后,我遇到了一个我无法解决的问题。这并不夸张;我已经尝试了我能想到和/或找到的每一种资源。数十种谷歌搜索使用不同的术语,询问其他[有经验的]程序员,摆弄代码,阅读文档,在SO上阅读许多问题和答案,以及可能的其他一些事情。我一定不要问谷歌的正确查询,因为这似乎是一种超常用的东西。

问题正如问题标题所述:jQuery中的.toggle()函数未触发iOS设备上的touchstart事件。它特定于操作系统而不是浏览器,因为它在iOS上的Safari或Chrome中不起作用。但是,它确实适用于我尝试过的所有其他内容(包括Chrome(Win),Firefox(Win)和Chrome(Android))。

情景:

我创建了一个带有三行或“汉堡包”菜单字形的小div按钮。点击时,列出导航选项的菜单应该从屏幕右侧滑入,并在再次点击按钮时向后滑动。

我正在使用jQuery 2.1.1jQueryUI 1.11.2,以及一个名为thd_scripts.js的脚本的自定义文件。

以下是文档标题中的脚本代码:

<script src="includes/scripts/jquery-2.1.1.min.js"></script>
<script src="includes/scripts/jquery-ui.min.js"></script>
<script src="includes/scripts/thd_scripts.js"></script>

thd_scripts.js中唯一的代码行:

$(document).on('ready', function() {
    $('#menuButton').on( 'touchstart', function(e){
        alert('Event fired!');
       $('#menuWrapper').toggle('slide', {direction: 'right'}, 400);
    })
})

HTML中按钮的代码:

<div id="menuButton">
    <img id="menuSprite" class="menuButtonImage" src="images/menu_button.svg" />
</div>

我知道'touchstart'事件正在iPhone上正确触发,因为警报会触发。但切换永远不会。

以下是我尝试过的代码变体列表(我现在还记得):

.bind() / .on()
click / touch / tap / touchstart (only touchstart seems to fire on iOS)
.toggle() [no parameters]
.toggle('slide')
.slideToggle()

TL; DR版本

我无法通过触摸屏幕的div在iOS / iPhone设备上从屏幕外滑动菜单。 <{1}}事件正在触发,jQuery动画为touchstart无效。

如何让它发挥作用?

0 个答案:

没有答案