2014-10-20 27 views
0

以上,自上次iOS更新(8 +)以来,Safari“销毁”我用于移动导航的jQuery脚本。 标记是一个正常的无序列表,由Contao生成。新的iOS和Safari删除在jQuery上通过脚本添加的类在

现在,当我在iOS 8+上打开我的页面时,脚本正常加载,我可以毫无问题地打开导航,但只要向下滚动一下,它就会关闭我的菜单 - 即使使用切换幻灯片动画,它只是消失。

我的标记:

<div class="nav-btn"> <!-- burger icon for menu interaction !--> 
    <span></span> 
    <span></span> 
    <span></span> 
    <span></span> 
</div> 
<div class="mod_navigation main-menu"> <!-- menu !--> 
    <ul class="level_1 clearfix"> <!-- main menu list !--> 
     <!-- list elements and anchors following here !--> 
     <li><a href="..." title="...">...</a></li> 
    </ul> 
</div> 

我的jQuery:

function hideDiv(){ 
if ($(window).width() > 941) { $(".main-menu .level_1").show(); } else { $(".main-menu .level_1").hide(); } 
} 

$(document).ready(function(){ 
hideDiv(); 
console.log('logging'); 
$('.header .nav-btn').click(function() { 
$('.main-menu .level_1').stop(true,true).slideToggle(); 
$('.nav-btn').toggleClass("open"); 
}); 
    $(window).resize(function(){ 
     hideDiv(); 
     $('.nav-btn').removeClass("open"); 
    }); 
}); 

是否有人使用类似的脚本和/或能告诉我为什么它关闭我的菜单?

我也创建了一个JSFiddle。 http://jsfiddle.net/940293vw/1/

我阅读了一篇关于他们如何在iOS8中更改滚动事件的文章,但是这并没有深入到关于为什么他们应该在滚动时停止脚本的细节。

任何帮助表示赞赏!

+0

伙计们停止懒惰如果您希望我们帮助,请尝试使用您的小提琴并查看它是否重现了问题。你的情况你甚至没有包含jQuery – 2014-10-20 07:38:10

回答

0

我在问了这个问题后很快解决了它,忘记回答了。无论如何。这对任何遇到同样问题的人都有效。

/* ios 8+*/ 
var widthwdw = 0; 

$(window).load(function(){ 
    widthwdw = $(window).width(); 
}); 

$(window).resize(function(){ 

    if(widthwdw != $(window).width()){ 
    //Do something 
    widthwdw = $(window).width(); 
    hideDiv(); 
    $('.header .nav-btn').removeClass("open"); 
    } 

}); 
0

我遇到了这个确切的问题。我最终做的是切换一个包含display:block;当slidetoggle完成。

我不知道原因,但移动Safari浏览器抹掉了用户滚动时由jQuery函数添加的inlnie样式。但它似乎并没有消除jQuery添加的类。移动Safari浏览器的作品以神秘的方式,和我同样好奇,为什么这是

代码应该是这样的:

$("#button").click(function(){ 
    $("nav").slideToggle(function(){ 
     $("nav").toggleClass('iosfix'); 
    }); 
    }); 
在我的CSS

然后 -

.iosfix { 
    display:block; 
} 

希望这有帮助!