2012-10-09 54 views
1

我試着去創建使用jQuery我的網站虛假懸停事件......Ipad的懸停事件的jQuery

我已經創建瞭如下唯一所有的孩子在我的列表中的元素現在返回false也,而不是鏈接到正確的頁面...

if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) { 
    $("ul.sf-menu li.i").click(function(e) { 
     e.preventDefault(); 
    }); 
} 

有沒有人可以工作的替代方法的想法?


HTML

<ul class="sf-menu"> <li><a href="index.html">Home</a><li class="i"><a href="wedding-hire.html">Weddings</a> 
      <ul> 
       <li><a href="peel-suite.html">Peel Suite</a></li> 
       <li><a href="the-hall.html">The Hall</a></li> 
       <li><a href="the-grounds.html">The Grounds</a></li> 
       <li><a href="food-and-drink.html">Food &amp; Drink</a></li> 
       <li><a href="pricing.html">Pricing</a></li> 
      </ul> 
     </li> 

+0

移動設備上沒有懸停。你想做什麼? – danwellman

+0

我知道@Danwellman,我試圖通過點擊顯示孩子UL而不是通過鏈接到父頁面來創建效果 – Liam

回答

0

好。沒有HTML就很難說。但是當用戶點擊li(並且因此還有它的孩子,我認爲它是錨點/鏈接)時,你正在停止瀏覽器的默認行爲。 你可以檢查它的鏈接或錨點點擊和處理方式不同;

$("ul.sf-menu li.i").click(function(e) { 
    if (e.target.nodeName!=="A"){ 
     e.preventDefault(); 
     //do your hover code 
    } 
    else{ 
     //do nothing, because the user wants the link to load 
    } 
}); 
+0

添加了HTML @japrescott – Liam

+0

嘗試我的代碼,並在其中說「做你的懸停代碼」 ,取消隱藏/顯示子菜單的ul。 – japrescott

+0

我試過了,沒有運氣! – Liam

0

變化的youre選擇,因此只能listpoints的第一級相匹配,還我沒有看到一類我,所以你可能需要刪除從選擇以及。

$("ul.sf-menu > li") 
+0

謝謝@VeXii,雖然沒有運氣... – Liam

+0

對不起,忘記了兒童listpoints中的事件泡泡,簡單的解決方案就是綁定兒童e.stopPropagation() $(「ul.sf-menu li」) .click(,function(e){e .stopPropagation() }) – VeXii