1

ノード (Raphael rect) にイベント ドラッグが接続されている状況があります。

r4.drag(dragMove, dragStart, dragStop);

dragStop ハンドラーでは、ドラッグ イベントと右クリック イベントを区別しています

if (editLabelFlag == false) {
    if (event.which == 3) {
        event.preventDefault();
        $('#contextmenu').slideDown('fast').delay(1000).slideUp();
        // code for
    }
} else {
    // drag code
}

ドラッグとクリックを区別するために、dragMove ハンドラーで editLabelFlag を true に設定しています。

私が直面している問題は、これが初めて問題なく発生し、後でノードを右クリックしてもブラウザのコンテキスト メニューしか表示されないことです。Firebug をチェックインしたところ、contextmenu div は常に表示なしのままで、初めて表示ブロックになったときにのみ表示されることがわかりました。event.preventDefault の代わりに return false を使用してみましたが、ブラウザ メニューの下にメニューが表示されます。

preventDefault がこの問題の原因ですか? いくつか提供してください

4

1 に答える 1

1

ブラウザがイベントを停止したためではなく、実際にはクローンを作成してオリジナルをドラッグしていました。ドラッグスタートでは、クローンは元の場所に配置され、クリック中に削除されませんでした。したがって、オリジナルにマップされたイベントはクローンで機能せず、クリックは 1 回だけ発生しました。

御時間ありがとうございます

于 2012-04-11T03:30:11.810 に答える