$(".div:has(span)").css("color", "blue");这个是之前的答案 $(".div>p:has(span)").css("color", "blue"); 这个是我写的 他的答案是不是少写了一个p啊 前几张也是这样少些一些代码 是故意写成那样的吗?
从字面意思来看,$(".div:has(span)")表示的是选中包含<span>的且class=div的元素;$(".div>p:has(span)")表示的是选中了属于class=div的元素的直接子元素且包含<span>的<p>。
所以前者表示选中的是class=div的元素,而你的写法表示选中的<p>。如果你给class=div的元素和<p>元素分别设置一下不同的宽和高以及背景颜色,就可以看出不用的效果了。