2017-02-15 4 views
1

私はこの方法でfilter()を使用しますが、それは動作しません:このjQueryの選択の意味は何ですか?なぜ "this"をfilter()に使うのですか?

$("p").filter(function(){ 
    return $("span").length == 2;}).css("background-color", "yellow");}); 

私は問題が取り組まれ"span"と一緒thisを追加した場合。私は,と1つの$に分かれた2つの要素がある理由とその意味を知りません。実際には私は今までのところ、2つのパラメータを合わせて$には見ませんでした。この例ではいつ、なぜ私はthisを使用しなければならないのですか?

$("p").filter(function(){ 
    return $("span", this).length == 2;}).css("background-color", "yellow");}); 
+1

あなたが気づいていない場合、Jqueryは[documentation](http://api.jquery.com/jquery/)を持っています。 –

答えて

4

は、2番目の引数は、あなたのセレクタがコンテキスト内spanを見つけようとすることを意味し、文脈で、thisはあなたのケースでp自体を指し、その全てマッチしたスパンがpコンテキスト内であろう。

それはあなたが2つ以上は、すべての文書(グローバル・コンテキスト)を介してまたがる持っているコードからと思われるので、あなたがお使いの場合

$("span").lengthをグローバルな文脈でそれ以上2.

しかし、内でしたpの文脈では、$("span", this)を使用すると2つの子供の頃が見つかりました。

1

は最後に宣言されたオブジェクトを参照します。この場合、$("p")を指します。

+0

追加情報についてはこちらを参照してください。この2番目の変数はコンテキストと呼ばれます。https://api.jquery.com/jquery/#jQuery-selector-context – Scovetta

関連する問題