2013-01-31 121 views
0

我在iOS 5及其下的设备上遇到jQuery和Safari的问题...
我有一个按钮,onClick在iOS 5的Safari上切换菜单并在菜单下方显示第一个click然后关闭第二..很大。但之后需要3次点击才能显示菜单。这在iOS 6或桌面浏览器上不会发生。jQuery在第一次触发后才在Safari iOS5中点击3次后触发

我试着用下面的代替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在我的代码中定义的更高。如果有任何帮助,该网站建立在bootstrap上。

回答

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

+0

感谢您的快速回复...它不工作(那种),但仍让您拥有的首秀后,点击/选项卡按钮反复和隐藏的问题,但只有在

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)]; 
} 
} 
相关问题