我以这种方式使用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");});
答案 0 :(得分:4)
第二个参数是上下文,这意味着您的选择器将尝试在上下文中查找span
,this
在您的情况下引用p
本身,因此所有匹配跨度将在p
上下文中。
从代码中可以看出,您在整个文档(全局上下文)中有超过2个跨度,所以当您使用时:
$("span").length
在全球范围内它超过了2.
但在p
的上下文中,当使用$("span", this)
时,您发现有两个孩子跨越。
答案 1 :(得分:1)
this
指的是最后声明的对象。在这种情况下,请参考$("p")
。