CommentOut

jQueryでオリジナルのイベントを発行し、そのイベントで関数を駆動させる jQueryでオリジナルのイベントを発行し、そのイベントで関数を駆動させる

jQueryでオリジナルのイベントを発行し、そのイベントで関数を駆動させる

公開日:  最終更新日:

jQueryではクリック、マウスオーバー、マウスリーブなどの既定のイベントが存在しますが、『要素が画面内に表示された時』にはイベントは発行されません。
アニメーションなどを設定すると、スクロールして要素が表示される前にアニメーションが終了してしまうという問題が発生してしまうので、今まで座標とスクロール量から、要素が画面内に収まっているか判定するなど、その都度泥臭い作業をしてきました。

そこで「監視対象の要素が『画面内に入った時』と『画面から出た時』の両方でイベントが発生したら良いのに」と考えて、オリジナルのイベントを作ることにしました。

jQueryでオリジナルのイベントを発行

クリックイベントなどを任意のタイミングで発行するメソッド『trigger』はご存じでしょうか?

// class:homeにクリックイベントを発行させる
$('.hoge').trigger('click');

この『trigger』関数を呼び出した時点で、引数に指定したイベントが発行されます。

この引数が『定数』ではなく『変数』であることにご注目ください。
イベントが決まったものしか設定できないなら、以下のように定数を入力させ、決まった値しか受け取らなければ良いのです。
Microsoft製の言語だと、よくこういう書き方をさせますよね。

// こういう書き方はしない
$('.hoge').trigger(EVENT_CLICK);

この変数を受け付ける構造は、既定の物以外でも受け付ける設定になっているんです。

// 任意のタイミングでオリジナルイベントを発行
$('.home').trigger('original_event');

これでオリジナルのイベントを発行することができます。

オリジナルイベントで動かす

さて、イベントの発行ができたら、そのイベントによって、関数を駆動させてみましょう。
オリジナルのイベントを処理するには、『on』を使用します。

$('.hoge').on('original_event', function() {
    // ここに処理を書く
});

これだけです。通常のイベント処理と同じように書くことが出来ます。

オリジナルのイベントを発行することで、処理の開始点と処理をわけて記述することが出来るので、すっきりとしたコードが書けるようになります。
『頻繁に使用するか』『必要か』と言われると、別の手段はいくらでもありますが、処理の開始部分にクラス名などを付けず、ただイベントを発行するだけにすることで、コードの再利用性を高めることが出来ます。

宣伝
WordPressサイトのテンプレート編集やトラブル対応、バグ修正、簡単なJavascriptの作成(カルーセルやバリデーション等)など、小規模なスポット対応を受け付けております。
もしお困りごとがありましたら、お問い合わせフォームよりご相談ください。

この記事を書いた人

uilou

uilou

プログラマー

基本的に、自分自身の備忘録のつもりでブログを書いています。 自分と同じ所で詰まった人の助けになれば良いかなと思います。 システムのリファクタリングを得意としており、バックエンド、フロントエンド、アプリケーション、SQLなど幅広い知識と経験があります。 広いだけでなく、知識をもっと深堀りしていきたいですね。