イベントハンドラーが要素に複数回バインドされている状況に直面しています (サードパーティのモジュールが原因で)。
これを回避するには、イベント ハンドラーが存在しない場合にのみイベント ハンドラーを追加するようにします。もう 1 つの可能性は、追加する前にすべてのイベント ハンドラーを単純に削除することです。
どのソリューションが好ましいですか? 性能面で大きな違いはありますか?
function hasEventHandler(element, event) {
var ev = $._data(element, 'events');
return (ev && ev[event]) ? true : false;
}
if ( !hasEventHandler($('#element')[0], 'click') ) {
$('#element').on('click', function () {
// do something
console.log('clicked');
});
}
また
$('#element')
.off
.on('click', function () {
// do something
console.log('clicked');
});