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;
);

pullcurrentMenu 在我的代码中定义得更高。如果有帮助,该网站是建立在引导程序上的。

【问题讨论】:

【参考方案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 错误

[更新mysql表后仅在单个列中丢失数据

QT 5.6.1 应用程序在退出插槽后仅在 x86 架构而不是 x64 上崩溃

Bootstrap 导航栏切换器仅在第一次单击时起作用

仅在第一次加载 Angular 网页时使用 Safari 接收 401 状态

Safari 9 仅在画布上绘制视频的第一帧(错误)