2011-10-31 19 views
0

jQueryを使用してリスナーをナビゲーションにアタッチし、Appleタッチデバイスにホバー効果を表示できるようにしようとしています。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> 

私は...私は警告を追加しました...動作するように思われるだけで、私のセレクタの前に

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

+0

ブラウザ検出、イベントバインド、または「console.log」のどの部分が機能しませんか?エラーメッセージが表示されるのですか? – nnnnnn

+0

ホバーはまだ動作していないようだが、私のコンソールにはエラーが出ない。私のタグの中で、私はcufonレンダリングテキストを持っているので、それは問題になる可能性がありますか? – Liam

+0

2番目の 'console.log()'の後に余分な '});があります。これはちょうどあなたの質問のタイプミスですか、それともあなたの_real_コードですか? – nnnnnn

答えて

2

最初に、1.4.3より前のjQueryを使用している場合、.bind()の代わりに.live()というイベントをバインドしてみてください。これにより、セレクタの一致に応答して将来動的に挿入される新しい要素に対しても、そのイベントにバインドされます。

jQuery 1.4.3以上で1.7より前のバージョンの場合は、.bind()の代わりに.delegate()を使用してください。

jQuery 1.7以降の場合は、.on()を使用してください。

あなたのテストがiPhoneまたはiPadで行われている場合は、console.log()の代わりにalert()を使用してください。consoleの出力はほとんど確認できませんでした。

</cufon要素に '>'文字がないため、投稿したマークアップの内訳が壊れていることがあります。これはコピー貼り付けの問題である可能性があります。

最後に、touch *イベントを使用しているのがわかります。私はあなたがjQuery Mobile、jQTouchなどであると仮定しなければなりませんか?

もしあなたがそれらのどれにも参加していなければ、基本的なjQueryは独自のAPIの表現を持たないため、タッチイベントのリスナーを登録できることを強く疑っています。

0

をアラートを追加しました私はすべてのものを正しくターゲットしていることを知っているので、今クリックしてul liをクリックしてリンクを無効にする方法がありますか?

関連する問題