1

YUI を使用して、ドラッグ ドロップのサポートを div に追加しています。クリックにも反応します。残念ながら、クリック動作はドラッグ ドロップ操作の後でも有効になります。コード スニペットを次に示します。

// Create a DOM object for the group tag.
div = document.createElement('div');
div.className = 'group';
div.onclick = function() { beginEditName(); }
container.appendChild(div);

// Enable drag/drop for the group tag.
dragdrop = new YAHOO.util.DD(div);
dragdrop.scroll = false;
dragdrop.on('dragEvent', function(ev) { onDrag(ev); });
dragdrop.on('endDragEvent', function(ev) { onEndDrag(ev); });
dragdrop.setXConstraint(0,0);

クリックはテキストを編集することになっていますが、ドラッグドロップはタグを移動することになっています。ただし、タグが移動された後にテキスト編集が開始されるように、onclick イベントが発生しています。

問題を回避するコードを作成できますが、単純なクリックとドラッグ ドロップを区別する、より直接的な YUI の方法はありますか?

4

1 に答える 1

2

マイケル、

http://ericmiraglia.com/yui/demos/ddclick.php

ソースを表示し、これについてさらに質問がある場合は、私 (yahoo dot com の ericmiraglia) に知らせてください。

変形。ここにコードをコピーします。このようにして、この男がサーバーからコードを削除すると、ソースを確認できるようになります。

var beingDragged = false;
var dd = new YAHOO.util.DD("drag");

dd.subscribe("mouseDownEvent", function(e){
    beingDragged = false;
});
dd.subscribe("startDragEvent", function(e) {
    beingDragged = true;
});
dd.subscribe("mouseUpEvent", function(e) {
    if(beingDragged) {
        alert("dragged")
    } else {
        alert("clicked");
    }
})
于 2008-11-20T04:40:28.537 に答える