2012-01-10 6 views
0

draggableビヘイビアを使用せずにjQueryを使用してdrag'n'drop impleplementationの最小限の例を投稿できますか?私の理解では、それは10行をはるかに超えてはならない。html jQuery w/out Draggableを使用したドラッグアンドドロップ

私は、次のHTMLをしました:

<div id="container" style="width:500px; height:500px;"> 
    <div id="draggable" style="width:10px; height:10px; background-color:blue;" /> 
</div> 

が、私はそう青いsqureをドラッグできるようにしたいです。

私の実装はうまくいきましたが、それはむしろ怪物に見えるので、私はあなたからクラスのタッチを取得したいと思います。

答えて

0

これは、私はそれを行うだろうかです:

$('#draggable').on('mousedown', function (evt) { 
    var offset = {x: evt.offsetX || evt.originalEvent.layerX, y: evt.offsetY || evt.originalEvent.layerY}; 

    // bind mousemove only if dragging is actually happening 
    $(document).on({ 
    // delegate the mousemove event to the draggable element 
    'mousemove.drag': $.proxy(function(evt) { 
     $(this).css({left: evt.pageX - offset.x, top: evt.pageY - offset.y}); 
    }, this), 

    // unbind namespaced events on mouseup 
    'mouseup.drag': function (evt) { 
     $(document).off('.drag'); 
    } 
    }); 

    return false; 
}); 

デモ:http://jsfiddle.net/sXahK/6/

+0

はアプローチが大好きですが、jQuery 1.7.1を使ってFFで動作しません:(これはフィドラーニーダーでは機能しません。 –

+0

クロムで試してみましたが、FFでチェックします) – Yoshi

+0

Chromeで動作確認済みです。私はJSとの間にはあまり関係がありません - 実際のマウスポインタを隠す方法はわかりません - いつでも見ることができますか? –

1

「ドラッグ可能でない」とは、jQuery UIを使用しないことを意味します。

これは完全ではありませんが、始めるには十分であるはずです。例えば、コンテナへのドラッグを制限しません。

ここにはworking exampleがあります。

+0

トライドラッグアンドリリース - その後、再びドラッグします。それは望ましくない粘着性のドラッグ可能な効果を作り出す。また、大型ドラッグ(ドラグ可能なサイズを50×50に変更)の場合、ドラッグ操作が実際のドラッグ開始位置を尊重しない場合は醜いように見えます。 –

+0

@ドミトリー - 私が答えて言ったように、それは完全であることを意味するものではなく、OPが行くために使うことができる基本的な出発点です。 –

+0

私はyaを聞く:)それはクールだ、私はとにかく風味を持っている。 –

関連する問題