mouseover()およびhover()関数を選択するのはいつですか?


112

jQuery .mouseover().hover()関数の違いは何ですか?それらが完全に同じである場合、jQueryが両方を使用するのはなぜですか?


4
これは重複した質問ではありません。提供されたリンクにはmouseoverイベントとmouseenterイベントがありますが、私の場合はmouseoverイベントとhoverイベントです。
Bhojendra Rauniyar 2013

1
それらはmouseover nad mouseleaveと同じで異なり、以下の受け入れられた回答は正確ではありません...ホバー機能はmouseoverイベントとmouseoutイベントではなくmouseenterイベントとmouseleveイベントを追加します
Arun P Johny

1
jsfiddle.net/arunpjohny/cZb5b/1を参照して、el要素からマウスを動かしてchildコンソールを確認してください
Arun P Johny

@ArunPJohnyをもう一度読んでください。これは、mouseoverやmo​​useoutではなく、mouseenterおよびmouseleaveを意味します。
Bhojendra Rauniyar 14年

1
また、ホバー-jsfiddle.net/arunpjohny/cZb5b/2を使用すると、コンソールを分析できれば、違いを見つけることができます...
Arun P Johny

回答:


113

公式のjQueryドキュメントから

  • .mouseover()
    イベントハンドラーを「マウスオーバー」JavaScriptイベントにバインドするか、要素でそのイベントをトリガーします。

  • .hover() 1つまたは2つのハンドラーを一致した要素にバインドし、マウスポインターが入ったときに実行されるようにします 及び要素。

    呼び出し$(selector).hover(handlerIn, handlerOut)は以下の略記です: $(selector).mouseenter(handlerIn).mouseleave(handlerOut);


  • .mouseenter()

    マウスが要素に入ったときに発生するイベントハンドラーをバインドするか、要素でそのハンドラーをトリガーします。

    mouseoverポインターが子要素に移動したときにも発生し、ポインターがmouseenterバインドされた要素に移動したときにのみ発生します。


これが意味すること

このため、.mouseover()あるではないと同じ.hover()同じ理由で、.mouseover()あるではないと同じ.mouseenter()

$('selector').mouseover(over_function) // may fire multiple times

// enter and exit functions only called once per element per entry and exit
$('selector').hover(enter_function, exit_function) 

31

.hover()functionは、mouseenterイベント用とイベント用の2つの関数引数を受け入れますmouseleave


これは、質問のタイトルに記載されている2つの機能の違いの点で大きなポイントです。ありがとうございます。.hover()がどのように機能するかについては、以下のw3schoolsのリンクをチェックしてください: w3schools.com/jquery/event_hover.asp
Bahman.A

8

jQueryのドキュメントページでhttp://api.jquery.com/mouseover/を試すことができます。これはとてもわかりやすいインタラクティブなデモで、とてもわかりやすく、実際に見ることができます。

つまり、要素の上にマウスオーバーイベントが発生すると、その要素上で子または親要素から発生しますが、マウス入力イベントは、マウスが親要素から要素に移動したときにのみ発生します。


1

公式ドキュメントから:(http://api.jquery.com/hover/

.hover()メソッドは、mouseenterイベントとmouseleaveイベントの両方のハンドラーをバインドします。これを使用して、マウスが要素内にある間に要素に動作を適用することができます。


1

あなたがhttp://api.jquery.com/mouseenter/で読むことができるように

mouseenter JavaScriptイベントはInternet Explorer独自のものです。イベントの一般的なユーティリティのため、jQueryはこのイベントをシミュレートして、ブラウザーに関係なく使用できるようにします。このイベントは、マウスポインターが要素に入ると要素に送信されます。すべてのHTML要素がこのイベントを受け取ることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.