2014-10-20 42 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; 
} 

希望這有幫助!