1

たとえば、私が持っている場合:

$("tag").hover(function () {
    $("#overlay").toggle();
});

toggleマウスが離れたときに変更を適用解除する方法をjQueryはどのように知っていますか? 上記のコードはそのまま機能ますが、コールバックで行った変更を jQuery がどのように認識しているか知りたいですか? 私の質問は、変更を手動で元に戻す方法を知っているので、変更を手動で元に戻す方法ではなく、コールバック関数で設定された変更を自動的に元に戻す方法をjQueryがどのように知っているのでしょうか?

4

3 に答える 3

3

.hover機能には2つのバージョンがあり、

.hover引数が 2 つある

  1. mouseenter のハンドラ
  2. mouseleave のハンドラ

.hover単一の引数バージョンもあります[あなたが持っているバージョン]

  1. mouseenter と mouseleave の両方のハンドラー

      $('something').hover(function () {
         console.log('I will be called when you mouseenter and mouseleave');
      });
    

ドキュメントから、

.hover( handlerInOut(eventObject) )Returns: jQuery

一致した要素に単一のハンドラーをバインドし、マウス ポインターが要素に出入りするときに実行されます。

handlerInOut(eventObject) 型: Function() マウス ポインターが要素に出入りするときに実行する関数。

于 2013-05-29T16:43:43.863 に答える
3

単一の引数を渡す.hoverと、ホバーのインとアウトの両方でコールバックが実行されます - http://api.jquery.com/hover/#hover2

そして、これはトグルの内部実装です

toggle: function( state ) {
    var bool = typeof state === "boolean";

    return this.each(function() {
        if ( bool ? state : isHidden( this ) ) {
            jQuery( this ).show();
        } else {
            jQuery( this ).hide();
        }
    });
}

に引数を渡していないため.toggle、jQuery は、この内部関数 (ソース コードから抽出) を使用して、要素が非表示になっているかどうかを確認します。

function isHidden( elem, el ) {
    // isHidden might be called from jQuery#filter function;
    // in that case, element will be second argument
    elem = el || elem;
    return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
}
于 2013-05-29T16:44:33.400 に答える
0

jQuery hover は、パラメーターとして 2 つの関数を受け取ります (ハンドル インとハンドル アウトの両方)。

http://api.jquery.com/hover/

于 2013-05-29T16:41:45.050 に答える