jQuery 在第一次切换后仅在 Safari iOS5 中单击 3 次后触发
Posted
技术标签:
【中文标题】jQuery 在第一次切换后仅在 Safari iOS5 中单击 3 次后触发【英文标题】:jQuery after first toggle only firing after 3 clicks in Safari iOS5 【发布时间】:2013-01-31 16:19:00 【问题描述】:我在 ios 5 及以下设备上使用 jQuery 和 Safari 时遇到问题...
我有一个按钮,onClick
切换菜单,在 iOS 5 上的 Safari 和菜单下方显示在第一个 click
然后在第二个关闭.. 很好.. 但是之后需要点击 3 次才能再次显示菜单.这不会发生在 iOS 6 或桌面浏览器上。
我尝试用以下代码替换 jQuery toggle()
函数,但这没有帮助。
pull.data('menuState','closed');
$(pull).on('click', function (e)
if (pull.data('menuState') === 'closed')
pull.data('menuState', 'open');
currentMenu.show();
else
pull.data('menuState', 'closed');
currentMenu.hide();
return false;
);
pull
和 currentMenu
在我的代码中定义得更高。如果有帮助,该网站是建立在引导程序上的。
【问题讨论】:
【参考方案1】:后来发现 iOS 5 在我的代码中触发了 window.resize
函数,这不是 100% 的最佳方法,但我检测到了围绕它编写代码的版本号。
function iOSversion()
if (/iP(hone|od|ad)/.test(navigator.platform))
var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
【讨论】:
【参考方案2】:这是我为替换切换功能所做的,它似乎运行良好。只需将您的需求放在奇偶函数中即可:
// place this before all of your code, outside of document ready.
$.fn.ToggleFix = function(odd, even)
return this.each(function()
var Toggled = false;
$(this).on("click", function()
if (Toggled)
Toggled = false;
return odd.apply(this, arguments);
Toggled = true;
return even.apply(this, arguments);
);
);
;
//what do you want each toggle to do
function odd()
$(this).animate("left": "+=50px", "slow");//EXAMPLE
function even()
$(this).animate("left": "-=50px", "slow");//EXAMPLE
//call your toggle method like this after creating the function you want above
$(function()
$("YOUR ELEMENT").ToggleFix(even, odd);
);
jsFIDDLE
【讨论】:
感谢您的快速回复...它确实有效(有点)但仍然遇到问题,您必须在第一次显示和隐藏后重复单击/标签按钮,但仅在以上是关于jQuery 在第一次切换后仅在 Safari iOS5 中单击 3 次后触发的主要内容,如果未能解决你的问题,请参考以下文章
每次构建后仅在活动选项卡中出现 Flash Builder 错误
QT 5.6.1 应用程序在退出插槽后仅在 x86 架构而不是 x64 上崩溃