2012-03-02 2 views
0

私はajaxから返されたライブdivをドラッグしようとしています。次のコードはデスクトップでうまく動作しますが、ipadではドラッグ可能なページをそれぞれ2回ドラッグしてドラッグしなければなりません。この1つをページの読み込みでさえも引き出す​​ための助けとなるでしょうか?iquadのライブイベントでjqueryをドラッグ可能

HTML::

<div class="draggable"> drag this </div> 

jqueryの:

$.fn.liveDraggable = function (opts) 
    { 

     if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) 
     { 
       this.live("touchstart", function() { 
       if (!$(this).data("init")) { 
        $(this).data("init", true).draggable(opts); 
       } 
       }); 
       return $(); 
     } 
     else 
     { 
      this.live("mouseover", function() { 
       if (!$(this).data("init")) { 
        $(this).data("init", true).draggable(opts); 
       } 
       }); 

       return $(); 
     } 

    }; 



    $(".draggable").liveDraggable(
    { 
     helper: 'clone',    
     containment: '#origin' 

    }) 

答えて

1

あなたはマウスオーバーイベントをバインドし、それらをタッチデバイス上の1対1の関係を持つことを期待することはできません私のコードは次の通りです。簡単に言えば、私は同じ問題を抱えていますが、これらのプロパティを継承する新しいDOM要素を追加するたびにすべてを初期化する必要があるため、実用的なモデルを使用しない以外の解決法はありません。

サイドノートです。

ライブイベントを既にその要素にアタッチしているかどうかを確認してください。

if (!$(this).data("draggable")) { 
    $(this).draggable(opts); 
} 

基本的には(ランダムなデータを追加する必要性を否定しているが)

'.data("init", true)' 

のように取り付けた後、あなたはドラッグ可能なことから、必要のない何かを持つ名前空間が常に真であることを乱雑に上記防止属性ドラッグ可能なメソッドは非常に簡単に削除できます。

関連する問題