0

iOS 5 以下のデバイスで jQuery と Safari に問題があります...メニューを切り替える
ボタンがあります。ただし、その後、メニューを再度表示するには 3 回クリックする必要があります。これは、iOS 6 またはデスクトップ ブラウザでは発生しません。onClickclick

jQuerytoggle()関数を次のように置き換えてみましたが、これは役に立ちませんでした。

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は上位に定義されています。それが助けになるなら、サイトはブートストラップに基づいて構築されています。

4

2 に答える 2

0

これが私がトグル機能を置き換えるために作ったものです、それはうまくいくようです。ニーズを奇数と偶数に機能させるだけです。

 // 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

于 2013-01-31T16:27:42.443 に答える
0

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)];
}
}
于 2013-02-02T13:44:50.770 に答える