jQueryの.mouseover()と.mouseenter()の違いを紹介!

jQueryの.mouseover()と.mouseenter()の違いをサンプルコード付きで紹介します。両者ともマウスが乗ったときのイベント設定を行うメソッドですが、違いがあります。.mouseout()と.mouseleave()の違いを含めて解説します。

コンテンツ [表示]

  1. 1jQueryの.mouseover()と.mouseenter()の違いを知りたい
  2. 2jQueryの.mouseover()と.mouseenter()の違い
  3. 2.1.mouseover()はパブリングが発生
  4. 2.2どちらを使うべきか

jQueryの.mouseover()と.mouseenter()の違いを知りたい

jQueryにはマウス関連のイベント設定のメソッドとして、マウスが乗った時の

  • .mouseover()
  • .mouseenter()
やマウスが外れた時のイベント設定用の
  • .mouseout()
  • .mouseleave()
のメソッドが用意されています。

さて、マウスが乗ったときにも2種類・外れたときにも2種類のメソッドがあり、ややこしいです。

今回はこれらの違いを解説し、ではどちらを使うべきなのかまで紹介していきます。

jQueryの.mouseover()と.mouseenter()の違い

では、まずはサンプルコードで.mouseover().mouseenter()の違いを見ていきましょう。

上記のサンプルコードのプレビューでは点線の内側にマウスカーソルを持っていくと結果欄に、テキストを追加する仕様となっています。

ここで灰色の「結果:」の箇所にカーソルを持っていくと.mouseover().mouseenter()の違いがよくわかります。

.mouseover()はパブリングが発生

灰色の「結果:」の箇所にカーソルを持っていくと、.mouseover()はイベントハンドラが2回実行されているのがわかると思います。

これが.mouseenter().mouseover()の大きな違いで

  • .mouseenter(): パブリング発生しない
  • .mouseover(): パブリング発生する
となっています。

また同様にマウスが外れた時の.mouseleave().mouseout()
  • .mouseleave(): パブリング発生しない
  • .mouseout(): パブリング発生する
の違いがあります。

ちなみにパブリングとは何か知りたい方は下記を参考にしましょう。

あわせて読みたい
jQueryのパブリングとは?サンプルコード付きで解説!のイメージ
jQueryのパブリングとは?サンプルコード付きで解説!
jQueryのパブリングとは何かについての解説と、パブリングを止めるstopPropagation()やデフォルト動作を止めるpreventDefault()の使い方についてサンプルコード付きで解説します。

どちらを使うべきか

ほとんどの状況ではパブリングは避けたいと思います。

そのためパブリングが発生しない

  • .mouseenter(): マウスが乗った時のイベント設定
  • .mouseleave(): マウスが外れた時のイベント設定
を利用するようにしましょう。

GeekHive採用サイト

関連記事