私はajaxを使用していくつかのフォームを呼び出してから、各ボタンのイベントハンドラをバインドします。問題は...私はajaxを使用して新しいフォームを呼び出すと、新しい要素に対してイベントハンドラが再度呼び出され、前の要素に対して2回追加されます。イベントハンドラが既に要素上にあり、再度バインドしていないかどうかを検出するにはどうすればよいですか?これを行うには既にバインドされている場合はイベントハンドラをバインドしない
function x(){
$("input:button").click(function(){
alert('is this called once?');
});
}
<input type='button' value='Disable me' />
<input type='button' value='Disable me' />
function x(){
$("input:button").click(function(){
alert('is this called once?');
});
}
// calling event twice simulating an ajax calling:
x();
x();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type='button' value='Disable me' />
<input type='button' value='Disable me' />
イベントの委任を使用すると、イベントハンドラを一度設定するだけで済みます。 – Pointy