[解決済み] クリックイベントが既にバインドされているかどうかを確認する方法 - JQuery
2022-06-12 11:59:25
質問
ボタンにクリックイベントをバインドしています。
$('#myButton').bind('click', onButtonClicked);
あるシナリオでは、これは何度も呼び出されているので、私が
trigger
を実行すると、複数のajaxが呼び出されるのを防ぐことができます。
どのようにすれば
bind
を実行します。
どのように解決するのですか?
2012年8月24日更新
: jQuery 1.8では、要素のイベントにアクセスするために
.data('events')
. (参照
このバグ
を参照してください)。 同じデータにアクセスするために
jQuery._data(elem, 'events')
これは文書化されていないため、100% 安定しているとは言えません。 しかし、これは問題ではなく、上記のプラグインコードの関連する行は、次のように変更することができます。
var data = jQuery._data(this[0], 'events')[type];
jQuery のイベントは
events
というデータオブジェクトに格納されているので、この中で検索することができます。
var button = $('#myButton');
if (-1 !== $.inArray(onButtonClicked, button.data('events').click)) {
button.click(onButtonClicked);
}
もちろん、このコードが一度だけ呼ばれるようにアプリケーションを構成できれば、それが一番です。
これはプラグインにカプセル化することができます。
$.fn.isBound = function(type, fn) {
var data = this.data('events')[type];
if (data === undefined || data.length === 0) {
return false;
}
return (-1 !== $.inArray(fn, data));
};
その後、呼び出すことができます。
var button = $('#myButton');
if (!button.isBound('click', onButtonClicked)) {
button.click(onButtonClicked);
}
関連
-
[解決済み] 要素外でのクリックを検出するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] どのラジオボタンが選択されているかをjQueryで知るにはどうしたらよいですか?
-
[解決済み] jQueryでページを更新するにはどうすればよいですか?
-
[解決済み] jQueryで複数のクラスを持つ要素を選択するにはどうすればよいですか?
-
[解決済み] 動的に生成された要素にイベントバインディングを行うか?
-
[解決済み] jQueryイベントKeypress。どのキーが押されたか?
-
[解決済み] Bootstrapのモーダルを閉じる
-
[解決済み] CSSを使用してSVG画像の色を変更する方法(jQuery SVG image replacement)とは?
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScript - 二重引用符のエスケープ
-
[解決済み] jQueryのイベントハンドラを削除する最良の方法?
-
[解決済み] jQuery データ属性の値に基づいて要素を検索する方法は?
-
[解決済み] チェックボックスのチェック/アンチェックは、jqueryを使用していますか?重複
-
[解決済み] jQueryでチェックボックスの値を取得する
-
[解決済み] jQueryでフォームフィールドをクリアする
-
[解決済み] jQueryでloading spinnerを表示するには?
-
[解決済み] ボタンやリンクを無効化・有効化する最も簡単な方法とは(jQuery + Bootstrap)
-
[解決済み] jQuery OR Selector?
-
[解決済み] jQueryで<input type="text">のonchangeを実装するには?