2011-10-31 90 views
0

我想使用jQuery將偵聽器附加到我的導航上,以便我可以顯示:在蘋果觸摸設備上懸停效果。iPhone/iPad懸停事件jQuery

我似乎無法得到它與我到目前爲止的工作,有任何人使用過這個?

<script> 
    $(document).ready(function() { 

     //ipad and iphone fix 
     if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) { 
      $("#primary-navigation li a").bind('touchstart', function(){ 
       console.log("touch started"); 
      }); 

      $("#primary-navigation li a").bind('touchend', function(){ 
       console.log("touch ended"); 
      }); 
     } 
    }); 
</script> 

我只是這似乎工作之前,我的選擇已經添加了一個警告...

+0

哪一部分不工作,瀏覽器檢測,事件綁定或'console.log'?你是否收到錯誤信息,或...? – nnnnnn

+0

懸停似乎仍然工作,我沒有在我的控制檯中得到一個錯誤。在我的標籤中,我確實有cufon渲染文本,所以這可能是問題嗎? – Liam

+0

你在第二個'console.log()'之後有一個額外的'});'是你的問題只是一個錯字,或者是你的_real_代碼嗎? – nnnnnn

回答

2

首先,如果您使用的是1.4.3之前的jQuery,請嘗試使用.live()而不是.bind()綁定事件。這將確保您將綁定到該事件,即使將來,動態注入響應選擇器匹配的新元素。

如果您使用的是jQuery 1.4.3+,但早於1.7,請使用.delegate()而不是.bind()

如果你使用jQuery 1.7+,然後使用.on()。如果你的測試發生在iPhone或iPad上,請使用alert()而不是console.log(),因爲你很難在這些設備上檢查console輸出。

我還可以指出,您發佈的標記分類已損壞,因爲您的</cufon元素缺少'>'字符。看起來這可能是一個複製粘貼問題。

最後,我可以看到你正在使用觸摸*事件;我必須假設你使用的是jQuery Mobile,jQTouch或其他?

因爲如果你不在其中之一,我強烈懷疑你可以註冊觸摸事件的偵聽器,因爲基本的jQuery在它自己的API中沒有對它們的表示。

0

我已經添加了一個警告...

$("nav#primary-navigation ul li a").bind('touchstart', function(){ 
    console.log("touch started"); 
alert('clicked');  
}); 

其中一期工程時,點擊,所以我知道即時通訊瞄準一切正確,現在有一種方法來禁用鏈接點擊ul li a?