2010-11-30 2 views
2

jQueryを使用してタッチスタート、touchmove、touchendを聴くことができ、iphone Safari(touchmoveのベースの位置を変更する)で 'dragitem'をドラッグできました。しかし、今問題は、 'dropArea'に 'dragitem'ドラッグすると、dropAreaレスポンスをどのように作ることができるかです。Touchevent(iPhoneブラウザ)を使用したjQueryのドラッグアンドドロップ

たとえば、 'dropArea'は 'dropArea'内で 'dragitem'がドラッグされているときにハイライト/グロー、背景色などを変更しますが、離れているときは 'dropArea'は通常のままです。何か案が?

ありがとうございます。

HTML:

<div class='dragArea' > 
<div id='box1' class='dragitem'> 
</div> 
<div id='box2' class='dragitem'> 
</div> 
</div> 

<div class='dropArea'></div> 

のjQuery:

var startTouchX = null; 
var startTouchY = null; 
var moveTouchX = null; 
var moveTouchY = null; 
var startPositionX = null; 
var startPositionY = null; 

$('.dragitem').bind('touchstart',function(event){ 
    event.preventDefault(); 
    var e = event.originalEvent; 
    startTouchX = e.targetTouches[0].pageX; 
    startTouchY = e.targetTouches[0].pageY; 
    startPositionX = $(this).css('left'); 
    startPositionY = $(this).css('top'); 
}); 
$('.dragitem').bind('touchmove', function(event){ 
    event.preventDefault(); 
    var e = event.originalEvent; 
    moveTouchX = e.targetTouches[0].pageX; 
    moveTouchY = e.targetTouches[0].pageY; 
    $('#movex').text(moveTouchX); 
    $('#movey').text(moveTouchY); 
    $(this).css({top: (moveTouchY - 50), left: (moveTouchX - 5)}); 
}); 
$('.dragitem').bind('touchend', function(event){ 
    $(this).animate({top: startPositionY, left: startPositionX}, 'fast'); 
}); 
+0

"dragitem"がたくさんある場合は、関数ハンドラのコードを複製する必要があることを知りたいですか? イベントが同じ「各dragitem」に対して同じコード「function(evnet){....}」を作成する必要がありますか?助けてください。 – Stallman

答えて

1

私は(オフセットをチェックします)$の(」dragitem。 ')配列および$(' ドロップ場所。 ')を移動ハンドラで...または間隔。

関連する問題