ZeroPlus Gateについて

\ シェア /

FacBook
Twitter
LINE
はてブ
PPocket
ZeroPlus Media > Web制作 > JavaScript > 【jQuery】マウスの出入りでイベント発火。mouseenterとmouseleveの使い方

【jQuery】マウスの出入りでイベント発火。mouseenterとmouseleveの使い方

JavaScript

2022/04/12

2023/05/06

jQuery mouseenter-mouseleave記事サムネイル

mouseenter()とmouseleave()の2つのイベントは、要素からマウスの出入りだけで発火する便利なイベントです。

この記事では「mouseenterイベントとmouseleaveイベントの使い方」について解説します。また、mouseenterと似ているmouseover、mouseleaveと似ているmouseoutとの違いについても解説します。

この記事で身につく内容
  • mouseenter/mouseleaveの使い方
  • mouseenterとmouseoverの違い
  • mouseleaveとmouseoutの違い

ZeroPlus Gateについて

プログラミング学習でこのような経験はありませんか?

  1. 目標に向けて何を学べば良いかわからない
  2. 調べても解決策が見つからない
  3. 現場レベルのスキルが身につくのか不安

これらの悩みは、学習環境を整えることで全て解決することができます。

ZeroPlus Gateでは、30日間無料で最適な学習環境を提供しています。

  1. なんでも相談できる専属メンター
  2. いつでも技術相談ができるプロ講師
  3. 元IT企業CTO監修のカリキュラム

条件なしでこのレベルの環境を無料で提供しているのはZeroPlus Gateだけです。
ただし、無料サービスの提供には参加者の数に制限があります。

少しでも興味がある方は、以下のリンクからサービスの詳細をご覧ください。

今すぐZeroPlus Gateの詳細を見る

mouseenterイベントの使い方

mouseenter()は、jQueryのイベントの1つ。マウスが要素の上に載っている状態で発火します。

基本書式は次のようになります。

基本書式

$('セレクタ').mouseenter(function() {
  // 処理の内容を書く
});

コードを実際に当てはめると、下記のようになります。

  <div class="box" id="js-box"></div>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  <script src="main.js"></script>
.box {
  width: 200px;
  height: 200px;
  cursor: pointer;
  background: orange;
}
const box = $('#js-box');

box.mouseenter(function () {
  alert('mouseenter');
});

出力結果

See the Pen mouseenter-alert by ZeroPlus (@zeroplus-programming) on CodePen.

mouseenterイベントによって、マウスを要素の上に載せるだけでalertメソッドが発火するようになります。

mouseenterとmouseoverの違い

mouseenterとmouseoverの2つのイベントは、どちらも要素の上にマウスが乗ったときイベントが発火します。

2つのイベントの違いは「子要素にもイベントが発火するか」ということです。

例えば下記のようなコードでmouseenterの場合とmouseoverの場合とで動きを確認してみましょう。

  <div class="box" id="js-box">
    <div class="box__inner">mouseenter</div>
  </div>
  <div class="box2" id="js-box2">
    <div class="box__inner">mouseover</div>
  </div>

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  <script src="main.js"></script>
.box,
.box2 {
  width: 200px;
  height: 200px;
  cursor: pointer;
  background: orange;
  color: #000;
  display: flex;
}

.box {
  margin-bottom: 20px;
}

.box__inner {
  width: 100px;
  height: 100px;
  cursor: pointer;
  background: white;
  margin: auto;
}
const enter = $('#js-box');
const over = $('#js-box2');

enter.mouseenter(function () {
  console.log("mouseenter");
});

over.mouseover(function () {
  console.log("mouseover");
});

出力結果

コンソール画面を確認すると、mouseenterの場合は子要素にマウスを移動してもイベントは発火しません。mouseoverの場合は、子要素にマウスを移動するとイベントが発火します。

これがmouseenterとmouseoverの違いです。

mouseenterとmouseoverの違い

  • mouseenter:イベントが子要素に影響しない
  • mouseover:イベントが子要素にも影響する

ZeroPlusgate50教材の動画

mouseleaveイベントの使い方

mouseleave()は、jQueryのイベントの1つ。マウスが要素から離れたときに発火します。
基本書式は次のようになります。

基本書式

$('セレクタ').mouseleave(function() {
  // 処理の内容を書く
});

コードを実際に当てはめると、下記のようになります。

  <div class="box" id="js-box"></div>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  <script src="main.js"></script>
.box {
  width: 200px;
  height: 200px;
  cursor: pointer;
  background: orange;
}
box.mouseleave(function () {
  alert('mouseleave');
});

出力結果

See the Pen mouseleace-alert by ZeroPlus (@zeroplus-programming) on CodePen.

mouseleaveイベントによって、要素上にあるマウスを要素の外側に移動しただけで、alertメソッドが発火するようになります。

mouseleaveとmouseoutの違い

mouseleaveとmouseoutの2つのイベントは、要素上にあるマウスを要素の外側に移動するとイベントが発火します。。

こちらもmouseenterとmouseoeverの場合と同様に、「子要素にもイベントが発火するか」という違いがあります。

例えば下記のようなコードでmouseleaveの場合とmouseoutの場合とで動きを確認してみましょう。

<div class="box" id="js-box">
  <div class="box__inner">mouseleave</div>
</div>
<div class="box2" id="js-box2">
  <div class="box__inner">mouseout</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="main.js"></script>
.box,
.box2 {
  width: 200px;
  height: 200px;
  cursor: pointer;
  background: orange;
  color: #000;
  display: flex;
}

.box {
  margin-bottom: 20px;
}

.box__inner {
  width: 100px;
  height: 100px;
  cursor: pointer;
  background: white;
  margin: auto;
}
const leave = $('#js-box');
const out = $('#js-box2');

leave.mouseleave(function () {
  console.log("mouseleave");
});

out.mouseout(function () {
  console.log("mouseout");
});

出力結果

コンソール画面を確認すると、mouseleaveの場合は子要素にマウスを移動してもイベントは発火しません。mouseoutの場合は、子要素にマウスを移動するとイベントが発火します。

これがmouseleaveとmouseoutの違いです。

mouseleaveとmouseoutの違い

  • mouseleave:イベントが子要素に影響しない
  • mouseout:イベントが子要素にも影響する

まとめ

mouseenterやmouseleaveなどのマウスカーソル系イベントは、マウスの移動だけでイベントを発火することができます。mouseoutやmouseoverなど挙動が似ているイベントがありますので、うまく使い分けていきましょう。

 

mouseenterとmouseleaveまとめ

  • mouseenter():マウスを要素の上に載せるとイベント発火
  • mouseleave():マウスを要素から離すとイベント発火
  • mouseenter()とmouseover()の違い:mouseenter()はイベントが子要素に影響しない
  • mouseleave()とmouseout()の違い:mouseleave()はイベントが子要素に影響しない
ZeroPlus Gateについて

プログラミング学習でこのような経験はありませんか?

  1. 目標に向けて何を学べば良いかわからない
  2. 調べても解決策が見つからない
  3. 現場レベルのスキルが身につくのか不安

これらの悩みは、学習環境を整えることで全て解決することができます。

ZeroPlus Gateでは、30日間無料で最適な学習環境を提供しています。

  1. なんでも相談できる専属メンター
  2. いつでも技術相談ができるプロ講師
  3. 元IT企業CTO監修のカリキュラム

条件なしでこのレベルの環境を無料で提供しているのはZeroPlus Gateだけです。
ただし、無料サービスの提供には参加者の数に制限があります。

少しでも興味がある方は、以下のリンクからサービスの詳細をご覧ください。

今すぐZeroPlus Gateの詳細を見る

\ 学んだことをSNSでシェアしよう /

おすすめのタグ

この記事の執筆者

ZeroPlus Media変種部

ZeroPlus Media編集部

ZeroPlusは、「フリーランス特化型プログラミングスクール」です。ZeroPlus Mediaでは、フリーランスとして活躍する際に役立つ有益なプログラミングやWeb制作に関する情報を発信しています。

質問について

ZeroPlus Media読者限定で質問対応をおこなっています。以下の2つの方法で質問を受け付けています。

選べる2つの質問方法

1

Google Foam(テキスト)で質問

mail

フォーム送信

メールで解答

formで質問
2

Google meet(オンラインmtg)で質問

meet

日時選択

メールを受け取る

メールからmtgに参加

meetで質問
ZeroPlus Gateについて

あなたの目的に合わせた2つのサービス

あなたの目的に合わせたZeroPlusの2つのサービス
基礎からフリーランスレベルまで本質的な学びを提供しています

完全無料!30日間で学びきれる
プログラミンスクールZeroPlus Gate

  • お金をかけずに、学習を進めたい
  • Webサイトを作れるようになりたい
  • メンターや講師に質問しながら学習したい

詳しくはこちらから

フリーランス特化型
プログラミングスクール ZeroPlus

  • プログラミング学習で悩んでいる
  • 仲間と一緒に学習したい
  • フリーランスとしての総合的な力を養いたい

詳しくはこちらから