誰も私に何か指針を与えることができる前に、これに出くわすことはありませんか?
ホワイトボードにメモを投稿するようなメモを作成するための Web アプリを作成しています。現時点では、スポーン ボタンはノートを生成しますが、ユーザーがキャンバス (ホワイトボード) の任意の場所をクリックできるようにしたいと思います。その位置に新しいノートが生成されます。
そのためのコードは次のとおりです。
$("#canvas").bind('click', function(e){
// Calculate offset for width, put box to the left top corner of the mouse click.
var x = e.pageX + "px";
var y = e.pageY + "px";
$("#note").clone().insertBefore("#insertAfter").attr("id", "note" + noteID).show();
$("#note" + noteID).children(".title").text("Note " + noteID);
$("#note" + noteID).css({left:x, top:y, "z-index" : zindex});
noteID++;
zindex++;
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
});
ユーザーがメモの 1 つをクリックすると問題が発生します。これは、ユーザーがメモをクリックして別のメモを作成するたびに、メモがキャンバスに複製されるためです。この動作を停止し、ユーザーが空白のキャンバス領域をクリックしたときにのみメモを作成したいと考えています。preventDefauly、stopPropagation、stopImmediate を試しましたが、どれも影響を与えていないようです。
ノートクリックなどの他のアクションでも試してみましたが、適切な場所に適切なものを取得できないようです? それとも私はこれを完全に間違った方法で行っていますか?
ここに例:
http://www.kryptonite-dove.com/sandbox/animate
アップデート:
$('#canvas').on('click', '.note', function(e) {
e.stopPropagation();
});
これにより、ノートが泡立つ問題は解決しましたが、ノート クラスでのクリック操作ができなくなりました。私は未知の海域にいます! メモのタイトルとテキストに対してクリックアクションを元に戻す方法についての指針をいただければ幸いです:)