jQueryのtrigger()で名前空間を使う

前回の「jQueryのoff()を使いこなす」ではイベントのアンバインディング時の名前空間の指定方法について解説しましたが、名前空間はtriggerメソッドでも利用できます。

次のように複数のイベントがバインディングされている場合、影響範囲を考慮せず「$("#bar").trigger()」などを利用すると予期せぬ処理が走ってしまいます。

$("#bar").click(function(){...(中略)...});
...
(中略)
...
$("#bar").click(function(){...(中略)...});

off()の時も説明しましたが、アクセス解析のツールがイベントを勝手にバインディングしている可能性もあり、基本的にあなたが把握していないイベントがバインディングされている可能性があることを前提にコードを書かなくてはいけません。

そのためtrigger()を利用する際も基本的には名前空間を利用する必要があります。

$("#bar").on("click.data_set",function(){...(中略)...});
...
(中略)
...
$("#bar").on("click.modal_close"function(){...(中略)...});

上記のようにイベントのバインディング時に名前空間を指定しておけば「$("#bar").trigger("click.data_set")」とすればclick.data_setのみが実行され「$("#bar").trigger("click.modal_close")」とすればclick.modal_closeのみが実行されます。

コードの影響範囲は極力最小限に抑えないと予期せぬバグを生み出してしまいます。影響範囲を抑えるという視点ではjQueryの名前空間は非常に簡単で優れているといえるでしょう。

スポンサードリンク

«jQueryのoff()を使いこなす | メイン | iOS 8.4.1の:hover問題»