2011-07-07 7 views
0

下にドラッグします:私がダウンしてドラッグを検出したり、上にドラッグしようとしていますdragup検出または以下の私が書かれている

var motion; 
var yPosStart = 0; 
var yPosEnd = 0; 
var lastDrag; 
var mouseDown = false; 

function drag(){ 
    $("*") 
    .mousedown(function() { 
     $(window).unbind('mousedown'); 
     if(mouseDown === false) { 
      mouseDown = true; 
      $(window).mousemove(function(e) { 
       if(yPosStart == 0) { 
        yPosStart = e.pageY; 
       }else{ 
        yPosEnd = e.pageY; 
       } 
      }); 
     } 
    }) 
    .mouseup(function() { 
     mouseDown = false; 
     lastDrag = (yPosStart < yPosEnd ? 'down' : 'up'); 
     yPosStart = 0; 
     yPosEnd = 0; 
     alert(lastDrag); 
     $(window).bind('mousedown'); 
    }); 
} 

、私もどこまで知りたいです。これは正しく動作していないように見え、場合によっては複数回警告することもあります。私がどこに間違って行っているか誰にでも助言することができます。

+0

既にタイトルタグ付けで十分です!そして署名!あなたは2年近くここにいました... –

+0

クラッキング入力のおかげで... –

+0

...歓迎ですか? –

答えて

0

私は別のアプローチを下りて行き、うまく使用しないのはなぜ

var dragStart = 0; 
var dragEnd = 0; 
var move; 

function getPosition(e) { 
    e = e || window.event; var cursor = {x:0, y:0}; 
    if (e.pageX || e.pageY) { 
     cursor.x = e.pageX; 
     cursor.y = e.pageY; 
    } else { 
     var de = document.documentElement; 
     var b = document.body; 
     cursor.x = e.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0); 
     cursor.y = e.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0); 
    } 
    return cursor; 
} 

function dragDetected(y, d) { 
    var motion = (y > dragStart ? 'down' : 'up'); 
    dragStart = 0; 
    alert(motion); 
} 

function dragDetect(){ 
    $(document).mousedown(function(e){ 
     if(dragStart == 0) { 
      var cursor = getPosition(e); 
      move = setTimeout(function(){dragStart = cursor.y;}, 500); 
     } 
    }); 
    $(document).mouseup(function(e){ 
     clearTimeout(move); 
     if(dragStart != 0) { 
      var cursor = getPosition(e); 
      var diff = (cursor.y > dragStart ? cursor.y - dragStart : dragStart - cursor.y); 
      if(diff >= 30) { 
       dragDetected(cursor.y, diff); 
      } 
     } 
    }); 
} 
0

を働くこの思い付いた:http://jqueryui.com/demos/draggable/

それは、次のイベントがあります。

を停止x、yの位置を保存し、毎回dragハンドラとstopハンドラに比較することができますハンドラ。

これは有用である(テストされ、クロスブラウザと互換性がある)。

関連する問題