这个jQuery选择的含义是什么?为什么我们将“this”用于filter()?

时间:2017-02-15 07:08:09

标签: javascript jquery

我以这种方式使用filter(),但它不起作用:

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

如果我在this旁边添加"span",问题就解决了。我不知道将2个元素与,分隔成一个$的原因是什么,以及它具有什么意义。实际上到目前为止我没有将{2}参数一起看到$。请告诉我在这个例子中我必须使用this的时间和原因?

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

2 个答案:

答案 0 :(得分:4)

第二个参数是上下文,这意味着您的选择器将尝试在上下文中查找spanthis在您的情况下引用p本身,因此所有匹配跨度将在p上下文中。

从代码中可以看出,您在整个文档(全局上下文)中有超过2个跨度,所以当您使用时:

$("span").length在全球范围内它超过了2.

但在p的上下文中,当使用$("span", this)时,您发现有两个孩子跨越。

答案 1 :(得分:1)

this指的是最后声明的对象。在这种情况下,请参考$("p")