2017-05-18 18 views
0

のイベントを「クリック」。今度は、この機能は私のページ上で複数回実行されます。jQueryのオーバーライドは、私がこれを持っている唯一の子オブジェクト

$('.parent').on('click', '.child1', function(event) { 
// do whatever 
}); 

$('.parent').on('click', '.child1', function(event) { 
// do whatever 
}); 

2回実行すると、イベントは上書きされずに追加されます。だから私は毎回2回、その機能を実行させるでしょう。ではない私の希望の動作(1つだけ実行)、イベントを複製からそれらを停止するために、私は通常どおりになります。この場合

$('.parent').off('click').on('click', '.child1', function(event) { 
// do whatever 
}); 

$('.parent').off('click').on('click', '.child2', function(event) { 
// do whatever 
}); 

を、第二.offは(「クリック」).child1からクリックを削除し、 2番目の要素は.child2にのみ関連し、.child1には関連しません。つまり、両方のイベントが.parentの別々の子のクリックで動作しても、私が 'off'テクニックを使用するとオーバーライドされます。

私の質問は、1つの特定の子に対してのみイベントをオーバーライドする方法です。同じ宣言を2回実行すると、イベントは重複しません。

PS:子どもが動的に読み込まれるため、$( '。子')のクリック()できません。静的な.parentにイベントを添付する必要があります。

+1

あなたはこれがXYの問題のように思えるイベントハンドラ – Satpal

+1

を__override__することはできません。あなたは解決しようとしている問題を述べる代わりに、欠陥のある解決策を求めています。あなたが達成する必要がある行動は何ですか? –

+0

目的の子供をターゲットにしてクリックする方法はありませんか? '.on(" click ")'を定義することは、悪い設計です。特定の要素に対してこれをしたいと思っているので、クラスや属性を追加して – sTx

答えて

1

希望はこのことができます:

$(document).off('click','.parent').on('click', '.child1', function(event) { 
    alert("click1"); 
}); 

$(document).off('click','.parent').on('click', '.child2', function(event) { 
alert("click2"); 
}); 
関連する問題