ZeroPlus Gateについて

\ シェア /

FacBook
Twitter
LINE
はてブ
PPocket
ZeroPlus Media > Web制作 > JavaScript > 【jQuery】hover()を使ったマウスホバー時の処理を解説

【jQuery】hover()を使ったマウスホバー時の処理を解説

JavaScript

2022/04/11

2023/05/06

jQuery hover記事サムネイル

jQueryにはWeb制作でよく使用されるクリックイベントの他に、マウスカーソルイベントがあります。マウスカーソルイベントの中でも代表的なhover()イベントは、マウスホバーの処理を簡単に行うことができます。

この記事では「jQueryのhover()イベントの使い方」について解説します。さらにこの記事の後半では、hover()と似たmouseover()との違いと、on('hover')との違いについても解説していきます。

この記事で身につく内容
  • jQueryのhover()イベントの使い方
  • hover()とmouseover()の違い
  • hover()とon('hover')の違い

ZeroPlus Gateについて

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

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

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

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

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

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

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

今すぐZeroPlus Gateの詳細を見る

hover()イベントの使い方

hover()イベントは、jQueryのイベントの一つ。要素にマウスをホバー(マウスオーバーとマウスアウト)するとイベントが発火します。

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

基本書式

$('セレクタ').hover(
  function (){
   // 要素にマウスを載せたときの処理
  },
  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")
$(function () {
  box.hover(
    function () {
      $(this).css('background', 'red');
    },
    function () {
      $(this).css('background', 'orange');
    }
  )
});

出力結果

See the Pen jQuery-hover by ZeroPlus (@zeroplus-programming) on CodePen.

要素にマウスをホバーすると、CSSメソッドによる背景色が変わるイベントが発火します。

動きとしては、mouseenter()とmouseleave()の2つのイベントの組み合わせとなります。

 

mouseenter()とmouseleave()の2つイベントに関しては、下記の記事で解説していますのでご一読ください。

 

hover()とmouseover()の違い

hover()とmouseover()の2つのイベントは、どちらも要素にマウスをホバーするとイベントが発火します。2つの違いは、「子要素にもイベントが発火するか」という違いがあります。

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

<div class="box" id="js-box-hover">
  <div class="box__inner">
    hover
  </div>
</div>
<div class="box2" id="js-box-over">
  <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: 10px;
}

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

hov.hover(
  function () {
    console.log('hover');
  }
);

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

出力結果

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

これがhover()とmouseover()の違いです。

hover()とmouseover()の違い

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

ZeroPlusgate50教材の動画

hover()とon(‘hover’)の違い

hover()イベントとon('hover')の違いは、「動的に生成された要素にイベントが効くか」という違いがあります。

hover()イベントの場合を見てみます。

<button id="js-btn">ボタンをクリック!</button>

<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;
  background: orange;
}
const btn = $('#js-btn');
const box = $('.box');
btn.click(function () {
  $('button').after("<button class='box'>hover!</button>");
});

$('.box').hover(function () {
  $('.box').css('background', 'red');
});

出力結果

hover()イベントの場合は、動的に生成された要素に対してイベントが効きません。

on("hover")の場合を見てみます。on("hover")は下記のようにmouseenter()とmouseleave()の2つのイベントで実行します。

const btn = $('#js-btn');
const box = $('.box');
btn.click(function () {
  $('button').after("<button class='box'>hover!</button>");
});

$(document).on({
  'mouseenter': function () {
    $(this).css('background', 'red');
  },

  'mouseleave': function () {
    $(this).css('background', '');
  }

}, '.box');

出力結果

on("hover")の場合は、動的に生成された要素に対してイベントが効きます。

hover()イベントとon("hover")の違い

  • hover():動的に生成された要素にイベントが効かない
  • on("hover"):動的に生成された要素にイベントが効く

まとめ

hover()イベントは簡単にホバーイベントを発火させることができます。似たようなイベントのmouseover()やon('hover')との違いを理解して、状況にあわせて使い分けていきましょう。

jQueryのhover()イベントまとめ

  • hover()イベントは、要素にマウスをホバーするとイベントが発火
  • hover()イベントは、動的に生成された要素にイベントが効かない
  • hover()イベントは、子要素にイベントが影響しない
  • mouseover()は、イベントが子要素にも影響する
  • on("hover")は、動的に生成された要素にイベントが効く
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

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

詳しくはこちらから