2012-10-24 28 views
0

顯示我還是新的移動/液體/響應的遊戲,與本網站上的子菜單是有問題:自動地懸停功能:http://www.medowsconstruction.com/WordPress的基礎子不是在iPad上

在移動設備上點擊應更換對?標準基金會主題似乎就是這種情況。

我沒有改變框架的這些移動特定領域的任何東西,所以我做了什麼來弄亂它並導致子菜單不能在iPad/touch上顯示?

感謝您的幫助

回答

1

看來,問題是,這是不是一個標準的純CSS下拉菜單,正如人們所承擔的風險。相反,它已被jQuery控制。你可以看到它在app.js文件:

$('.nav-bar>li.has-flyout').hover(function() { 
     $(this).children('.flyout').show(); 
    }, function() { 
     $(this).children('.flyout').hide(); 
    }); 

所以,你應該修改腳本,以便與觸摸選定設備的工作(有關於該主題here了很好的討論)。我在這裏使用一個簡單的聲明。我一直無法測試它的iPad,但如果您嘗試使用類似你可以有很好的效果(未經測試!):

if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) { 
$('.nav-bar>li.has-flyout').bind('touch', function() { 
     $(this).children('.flyout').slideToggle(); 
    }); 
} else { 

$('.nav-bar>li.has-flyout').hover(function() { 
      $(this).children('.flyout').show(); 
     }, function() { 
      $(this).children('.flyout').hide(); 
     }); 
} 

這應該給你如何處理一些線索。讓我們知道它是否有效。

這個stackoverflow discussion about hover and touch devices也有很多信息。

+0

herman,謝謝你的幫忙。它看起來像你會有/應該工作。儘管如此,我認爲這是在Modernizer.js的一些基礎腳本中。這條線特別是: if(Modernizr.touch || navigator.userAgent.match(/ Windows Phone/i)){ 無論如何,這是行不通的,你的腳本或任何衍生品我都沒有試過用。看起來我需要找到一個具有開發模式的iPad測試代理,所以我可以真正檢查出現的錯誤:\ –

+0

我認爲您正在開發它,但現在它似乎可以在iPad上運行。我只是看看它,子菜單顯示在觸摸事件上。我希望它有幫助。 – Hernan

0

感謝@hernan讓我在正確的方向與事情。

我最終通過將基礎代碼與他的代碼與一些更好的選擇器混合來修復它。這裏就是我降落:

if (navigator.userAgent.match(Modernizr.touch || navigator.userAgent.match(/Windows Phone/i))) { 
    $('.nav-bar>li.has-flyout').on('click.fndtn touchstart.fndtn', function(e) { 
     e.preventDefault(); 
     var flyout = $(this).children('.flyout').first(); 
     if (lockNavBar === false) { 
      $('.nav-bar .flyout').not(flyout).slideUp(500); 
       flyout.slideToggle(500, function(){ 
       lockNavBar = false; 
      }); 
     } 
     else 
     { 
      flyout.slideToggle(500); 
     } 
    }); 

i'l一定會檢查到你所提到的這兩條鏈路/討論過,埃爾南。

再次感謝 -