• HOME > 
  • JavaScript > 
  • jQueryのhoverでマウスホバー時の処理を行う方法【m...

jQueryのhoverでマウスホバー時の処理を行う方法【mouseoverやonとの違い】

投稿日:

このページにはGoogleアドセンス広告とアフィリエイト広告が含まれています。

カテゴリー記事のアイキャッチ画像
広告
広告

hoverメソッドの使い方

jQeuryでユーザーがマウスホバーした時に処理を実行させたい場合には、「hoverメソッド」を使用します。

CSSのhoverとの違い

CSSにも疑似クラス「hover」を使えばマウスホバー時にスタイルを変更することはできますが、jQueryのhoverメソッドを使えばマウスホバー時にテキストを書き換えるなど様々な処理を実行することが可能です。

hoverメソッドの記述方法

hoverメソッドは次のようにマウスがホバーした時と離れた時の処理をそれぞれ記述します。

hoverメソッドの書き方

次の例ではマウスホバー時に背景色の変更とテキストの書き換えを実行するようにしています。

HTML

<div class="sample" style="background:#224fdd;">カーソルをのせて!</div>

jQuery

$(".sample").hover(
    function(){
        //マウスホバー時の処理
        $(this).css("background","#dd2222");
        $(this).text("マウスホバー中!");
    },
    function(){
        //マウスが離れた時の処理
        $(this).css("background","#224fdd");
        $(this).text("カーソルをのせて!");
    }
);

プレビュー

カーソルをのせて!

mouseoverメソッドとの違い

jQueryにはhoverメソッド以外にもマウスホバー時の処理を行うメソッドが存在します。その一つが「mouseoverメソッド」です。

hoverメソッドとmouseoverメソッドの違いは、まずmouseover単体ではマウスホバー時の処理しか行えないという点です。

mouseoverでマウスホバー時の処理を行う場合、マウスが離れた時の処理は「mouseout」という別のメソッドを使って行わなくてはなりません。

jQuery

//マウスホバー時の処理
$(".sample").mouseover(function(){
    $(this).css("background","#dd2222");
    $(this).text("マウスホバー中!");
});
//マウスが離れた時の処理
$(".sample").mouseout(function(){
    $(this).css("background","#224fdd");
    $(this).text("カーソルをのせて!");
});

子要素にマウスホバーした時の違い

両者の大きな違いは、子要素にホバーした時に処理が発火するかどうかという点にもあります。

  • hoverメソッドは子要素にマウスホバーしても発火しない
  • mouseoverメソッドは子要素にマウスホバーしても発火する

次の例ではマウスホバーする度に回数がカウントされていきますが、hoverメソッドの方は要素内でカーソルを動かして子要素に移っても何も起きません。一方、mouseoverメソッドは要素内から子要素へカーソルを移したときにも処理が行われ、カウントが進みます。

HTML

<div id="testA" class="test" style="background:#224fdd;">hover<span>0</span></div>
<div id="testB" class="test" style="background:#224fdd;">mouseover<span>0</span></div>

jQuery

var countA = 0;
$("#testA").hover(
    function(){
        countA++;
        $("#testA span").text(countA);
    },
    function(){
        var countA = 0;
    }
);
var countB = 0;
$("#testB").mouseover(function(){
    countB++;
    $("#testB span").text(countB);
});
$("#testB").mouseout(function(){
    var countB = 0;
});

プレビュー

hover0
mouseover0

このように子要素に対する処理という点において両者には大きな違いがありますので、使用する目的や状況に応じて使い分けが必要です。

onメソッドによるマウスホバーイベントとの違い

hoverメソッド以外でマウスホバー時の処理を行うメソッドには「onメソッド」もあります。

onメソッドはページの読み込み(ロード)やクリックといったアクションに応じて処理を実行させることができるメソッドです。

onメソッドを使ってマウスホバー時の処理を実行させるには次のように記述します。

onメソッドによるマウスホバーイベントの書き方

jQuery

$("#testC").on({
    "mouseenter":function(){
        //マウスホバー時の処理
        $(this).css("background","#dd2222");
        $(this).text("マウスホバー中!");
    },
    "mouseleave":function(){
        //マウスが離れた時の処理
        $(this).css("background","#224fdd");
        $(this).text("カーソルをのせて!");
    }
});

後から追加された要素でも処理を設定することが可能

hoverメソッドとonメソッドの最大の違いは、onメソッドはJavascriptなどで後から追加(生成)した要素に対しても処理を設定(操作)できるという点です。

例として、クリックによって追加した要素にマウスホバーの処理を設定してみます。

まずは、次のようにクリックによって要素を追加するようにしておきます。

HTML

<button id="btn">クリックして!</button>

jQuery

$("#btn").on("click",function(){
    $(this).before("<div id='testD' style='background:#224fdd;'>追加された要素</div>");
});

次に追加した要素「testD」に対してhoverメソッドでマウスホバーの処理を指定してみます。

jQuery

$("#testD").hover(
    function(){
        //マウスホバー時の処理
        $(this).css("background","#dd2222");
        $(this).text("マウスホバー中!");
    },
    function(){
        //マウスが離れた時の処理
        $(this).css("background","#224fdd");
        $(this).text("カーソルをのせて!");
    }
);

プレビュー

ボタンをクリックするとその上に要素(testD)が生成されます。この要素にマウスホバーしてもhoverメソッドを使って記述した処理が実行されないことがわかります。

今度はonメソッドを使って処理を記述してみます。

動的に追加した要素に対する処理は次のような書き方になります。

onメソッドによる動的に追加した要素に対する処理の書き方

jQuery

$(document).on({
    "mouseover":function(){
        //マウスホバー時の処理
        $(this).css("background","#dd2222");
        $(this).text("マウスホバー中!");    
    },
    "mouseleave":function(){
        //マウスが離れた時の処理
        $(this).css("background","#224fdd");
        $(this).text("カーソルをのせて!");
    }
},"#testD");

プレビュー

onメソッドを使うとボタンをクリックして生成された要素にもマウスホバーの処理が実行されました。

ユーザーのアクションに応じて様々な処理が必要になるようなサイトでは、動的に追加された要素に対しても有効なonメソッドが重宝されます。

リンク先のサムネイル
jQueryのクリックイベントの使い方【click()とon()の違い】

要素がクリックされた時に特定の処理が実行されるようにしたい場合は、jQueryのclickメソッドかonメソッドを使用してクリックイベントを作成します。このページではそれぞれのメソッドの使い方と...【もっと読む】

まとめ

以上がjQueryのhoverメソッドでマウスホバー時の処理を行う方法です。

mouseoverやonメソッドとの違いを理解して、用途に応じた使い分けが必要になります。

広告
広告

関連する記事

サムネイル

JSで入力値が英数字や半角かどうか即時文字チェックする【ma……

2024年10月02日
JavaScriptのmatch()は、正規表現を使って対象の文字列の中に一致するものがあるか検索できるメソッドです。このページではテキストボックスに入力された文字が数字や半角かどうかチェックする機能をmatchメソッドを使って実装する方法ついてご紹介します。
サムネイル

JSでHTMLのデータ属性を取得・更新する方法【datase……

2024年10月02日
JavaScriptのdatasetで要素のdata属性を操作する JavaScriptのdatasetは、HTML要素に設定されたデータ属性(data-*** […]
サムネイル

JavaScriptでラジオボタンの値(value)を取得す……

2024年10月02日
JSでラジオボタンの値を取得・操作する JavaScriptによるラジオボタンの操作(値の取得やチェックの切り替え)の方法を備忘録として残しておきます。 JSで […]
サムネイル

JSで大文字から小文字(小文字から大文字)へ変換する方法

2024年10月02日
JavaScriptで大文字と小文字を変換する JavaScriptを使った文字検索フォームを作るにあたり、大文字小文字どちらで入力されても良いよう、変換処理を […]
サムネイル

JSのclassList.toggleでクラスの付け外しを行……

2024年09月04日
classList.toggleとは? まず「classList」とは要素のクラス属性の情報を参照するプロパティで、「classList.add()」や「cla […]
サムネイル

JSで要素が特定のクラスを持つか調べる【classList.……

2024年09月04日
JSで要素が特定のクラスを持つか調べるには? JavaScriptで要素が特定のクラスを持つか調べるには「classList.contains」を使います。 「 […]
サムネイル

JSで文字列の中の任意の位置に別の文字を挿入する【slice……

2024年09月04日
JavaScriptに文字列の中の任意の位置に別の文字を挿入するにはslice()メソッドを利用します。sliceは特定の文字列の任意の位置から任意の文字数分を切り出すメソッドで、これを使って対象の文字列を一旦分解し、挿入したい文字と一緒新しい文字列としてくっつけ直します。