私はJavascriptを使い始めたばかりで、さまざまなコードで同じ問題に何度も遭遇しました。あるタイプの要素を作成する関数と、そのタイプの要素で何かを行う関数があります。要素を作成した後で「何かをする」関数を呼び出す必要があることは明らかですが、呼び出すと、必要以上に実行されることになります。
これが私の問題の例です:
function rightClick(){
$(".element").mousedown(function(e){
switch (e.which){case 3: alert( $(this).attr("id") )};
});
};
function doubleClick(){
var counter = 0;
$(document).dblclick(function(e){
counter++;
elementId = "element" + counter;
$("#new_elements").append("<div class='element'" +
"id='" + elementId + "'" +
"style='position:absolute;" +
"top:" + e.pageY + ";" +
"left:" + e.pageX + ";'>" +
elementId+ "</div>");
rightClick();
});
この例では、4つの要素を作成し、最初に作成した要素を右クリックすると、1つではなく4つのアラートボックスが表示されます。作成した2番目の要素を右クリックすると、3つのアラートが表示されます。3番目:2つのアラート。4番目:1つのアラート。
誰かが私にこれが起こっている理由と、要素を右クリックするたびにアラートが1つだけ表示されるように修正する方法を説明できますか?