1

次のコード スニペットに違いはありますか?

スニペット 1:

$("textarea").mouseenter(function() {
    alert("Hello mouseenter!");
});

$("textarea").mouseleave(function() {
    alert("Hello mouseleave!");
});

スニペット 2:

$("textarea").hover(function() {
    alert("Hello mouseenter!");
}, function() {
    alert("Hello mouseleave!");
});

上記のコード スニペットを Chrome と Firefox で確認しましたが、両方のスニペットの動作は同じでした。ただし、確認したかったのは、mouseenter-mouseleave と hover イベントに違いはありますか?

4

5 に答える 5

2

ホバーはmouseenterとを使用しmouseleaveます。

違うのはmouseovermouseoutです。enter/leaveネイティブ イベントではなく、イベントのサブセットですover/out

over/out親から子に移動した場合にもイベントが発生します。を取得しmouseout、戻ると aを取得しmouseoverます。ホバーを要素に適用し、それが子であるため、これはホバーには適していません。

于 2013-10-25T09:13:48.273 に答える
2

ホバー機能を使用すると、イベントが 2 回発生し、マウス インとマウス アウトの両方に対して機能します。

$("#xyz").hover(function (e) {
            alert("In hover function ");
});

これにより、アラートが 2 回トリガーされます。1 回はマウスを xyz 要素に置いたとき、もう 1 回はマウスを xyz 要素から離したときに発生します。これにより、コードに問題が発生する可能性があります.mouseienter mouseleaveイベントのように、それに応じてイベントを計画できます.

于 2014-08-09T07:38:13.243 に答える
2

それらの間に違いはありません... hover() メソッドは、mouseenter および mouseleave ハンドラーを内部的に登録します....

ホバー - コード

hover: function( fnOver, fnOut ) {
    return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
}

唯一の違いは、イベント委任を利用したい場合、そのシナリオでは使用できないことです.hover()

于 2013-10-25T09:07:18.530 に答える
1

Hover は子のイベントを発生させませんが、mouseenter と mouseleave は発生させます。

于 2013-10-25T09:21:13.433 に答える