-1

ネストされたステートメントで「this」を参照したい場合、どの「this」を使用しますか?

上記の意味を示す例を次に示します。

    $("input").blur(function(){
            var theThis = $(this);
            if(!($(".invalid").length > 0)){
                //if there's no messages already open
                theThis.data("validator").checkValidity();
            }else{
                //add the message to the next to be displayed
                nextToAlert.push(theThis);
                //bind an event to the errored field being changed
                $(".invalid").on("change", function(){
                    var me = $(this);
                    if(!me.hasClass('invalid')){
                        nextToAlert.pop().checkValidity();

                    }
                });
            }
    });
4

3 に答える 3

1

をよりよく理解するためにこの記事を読んでください$(this)。簡単な(常に正しいとは限りませんが、99%の場合)ルールとして:$(this)現在の実行コンテキスト(DOMドキュメント内の現在の場所)で問題の要素を参照します。

あなたの例では:

  • theThis(現在)になります$("input")
  • me(現在)になります$(".invalid")
于 2012-08-15T08:57:25.297 に答える
1

あなたのコードでは:

  • theThisを指します$("input")
  • meに戻る$(".invalid")

$(this)現在のスコープに応じて常に変更されます。

、、、、などblurのアクションバインディング関数を使用すると、イベントがバインドされている現在のjQueryオブジェクトを参照します。onbindlive$(this)

于 2012-08-15T08:59:37.543 に答える
1

Javascriptは関数スコープを使用します。の値は、thisそれを含む最も内側の関数がどのように呼び出されたかによって異なります。を呼び出すと、メソッド内のobject.method()値は;になります。を呼び出すと、の値はです。を呼び出して、任意の値に設定することもできます。関数がコールバックである場合、取る値はそれを呼び出すコードに完全に依存するため、主要な情報源はjQueryドキュメントである必要があります。ただし、通常、jQueryはアクションが発生するDOM要素に設定されます。たとえば、 inの値はクリックをキャッチした要素になり、コレクション内の現在の要素になります。thisobjectfunction()thiswindowthisfunction.call(thisValue)thisthis$('.foo').on('click', myFunc)thismyFunc$('.foo').each(myFunc)$(this)次に、DOM要素をjQuery要素に変換するために使用されます。

于 2012-08-15T09:14:51.350 に答える