2012-01-27 6 views
3

私はJquery Mobileを使用していますが、タッチイベントが2回トリガされています。最初はマウスイベントとタッチイベントのオーバーラップが考えられましたが、タブレット/スマートフォンでマウスイベントをバインド解除しようとしましたが、イベントはまだ2回トリガーされています。なぜタッチイベントが2回トリガされたのか分かりません

は、ここで私はあなたが任意のアイデアを持っている場合、助けてくださいしばらくの間、これを理解しようとしてきた

//Tablet Features 
      var eventType = { 
       swipeleft: '-=100', 
       swiperight: '+=100' 
      } 
      $('#navMenu').bind('swipeleft swiperight', 
       function(e) { 
        $('#prbBtnHolder').animate({left:eventType[e.type]}); 
        //alert(e.type); 
       } 
      ); 

//Device Detection 
     (function() { 
      var agent = navigator.userAgent.toLowerCase(); 
      var isDevice = agent.match(/android/i); 

      if (isDevice == 'android') { 
       //alert(isDevice); 
       $('*').unbind('mousedown').unbind('mouseout').unbind('mousemove').unbind('mouseup'); 
      } 
     })(); 

私のコードです。

UPDATE

私は.ready()方法の外にタッチハンドラを配置することにより、ローカルで問題を解決するために管理。しかし、私はサーバー上でページを実行すると、ダブルトリガが再び発生します。今私は完全に困惑している。 2つの同一のページ(文字通り同一)は、ローカルとサーバー上で異なる動作をするのはなぜですか?

+0

'i'フラグは大文字と小文字を区別しないので、正規表現で' i'フラグを使うと、 'toLowerCase()'を使う必要はありません。 – Jasper

+0

どのタッチイベントが2回トリガーされていますか?投稿されたコードのタッチイベントは、 'swipeleft' /' swiperight'イベントハンドラだけです。私はここでコードをテストしました:http://jsfiddle.net/B8PQn/1/私の携帯電話(Android 2.3)で、スワイプのイベントは期待通りに機能しました。 – Jasper

+1

@ Jasper - これはコードの単なる例です。ページ上のすべてのイベントが2回トリガーされていますが、理由は不明です。多分、jquery mobileと何らかのオーバーラップがありますか? – dopatraman

答えて

-1

あなたのスクリプトを<body>タグに入れているようです。そうすると、2回実行されます。私はこれと同じことが起こったのを見て、トラブルや欲求不満のために少しバラをしました。すべてのスクリプトが<head>タグ内にあることを確認してください。

0

私は同じ問題を抱えていましたが、ちょっと微調整して修正しました...私は正確な解決策としてこれをお勧めしませんが、私はあなたの問題を速やかに解決します。

if (bDidPan) { 
    bDidPan = false; // IT'S IMPORTANT TO PUT THIS FIRST 
    //code to execute when triggers 
} 
else 
{ 
    bDidPan = true; 
} 

、それはトリックをした:

私は

var bDidPan=true; 

とトリガー内でグローバルフラグを定義するには、次のことを書きました。あなたは数字でトリックをすることができます(それは私のために数字でうまくいった!)

希望する!

関連する問題