removeClass在iOS上不起作用
当你点击.menuButton
jquery将添加一个名为active
的类。 这个Jquery代码可以在Windows和Android上运行,除了iOS(使用Chrome和Safari进行testing)。
HTML5
<div class="menuButton"> Menu Button </div> <div class="navmenu"> <ul> <li><a href="#">Home</a></li> <li><a href="#">Something</a></li> </ul> </div>
jQuery的
var removeClassVar = true; $('.menuButton').on('click', function() { $('.navmenu').toggleClass('active'); removeClassVar = false; }); $('.navmenu').on('click', function() { removeClassVar = false; }); $(document).on('click', function() { if (removeClassVar == true) { $('.navmenu').removeClass('active'); } removeClassVar = true; });
CSS3
.menuButton { display:block; cursor:pointer; } .navmenu { display:none; } .navmenu.active { display:block; }
问题:当你点击.menuButton
,菜单会显示,但是当你点击html
,菜单将不会运行removeClass('active')
。 这个问题只发生在iOS上。
JsFiddle: https ://jsfiddle.net/dkg7tyu0/
更新JSFiddle: https ://jsfiddle.net/dkg7tyu0/5/
更新显然iOS不工作与on('click'')
但添加下面的代码将得到我一个Hello World $('.menuButton').on('touchstart click', function(){ alert('hello world'); });
。 坏消息是,将我的代码从on('click')
更改为on('touchstart click')
对于删除类没有任何影响。
尝试这个
$(document).ready(function() { var $ua = navigator.userAgent; var $event = ($ua.match(/(iPod|iPhone|iPad)/i)) ? "touchstart" : "click"; $(document).on($event, function(ev) { if ($('.navmenu').hasClass('active')) { $('.navmenu').toggleClass('active'); } }); $('.menuButton').on('click', function(e) { e.stopPropagation(); $('.navmenu').toggleClass('active'); }); });
http://codepen.io/fabiovaz/pen/VaPzqz
我真的认为你的问题是$('html')。点击()在iOS上,你可以search其他解决scheme(如触摸动作),或检查这是否工作$('html').click(function() { alert('hello world'); });
var ua = navigator.userAgent, event = (ua.match(/iPad/i)) ? "touchstart" : "click"; $(document).on(event, function (ev) { ... });
你能试试吗?
见这里https://jsfiddle.net/dkg7tyu0/1/
if (!$('.navmenu').hasClass('active')) { $('.navmenu').addClass('active'); removeClass = false; }