为什么这些jQuery选择器中的一个工作而另一个不工作?

Mis*_*ier 3 jquery css-selectors

$.prev("div.a").find('.b').

$.prev("div.a .b").
Run Code Online (Sandbox Code Playgroud)

一个有效,另一个没有.有什么不同?

gna*_*arf 5

好吧,选择器工作,它只是没有给你你想要的东西:

根据jQuery Docs .prev([expr]):

获取一组元素,其中包含每个匹配元素集的唯一先前兄弟节点.使用可选表达式过滤匹配的集合.只返回前一个兄弟姐妹,而不是所有以前的兄弟姐妹.

这意味着:$(elem).prev("div.a").find('.b')正在寻找在DOM树的任何一个同级这是一个div.a和返回第一-然后使用该元素中搜索.find().b

鉴于:$(elem).prev("div.a .b")正在寻找任何先前的兄弟姐妹,div.a .b并且返回第一个兄弟姐妹.

它们不等同,因此返回不同的结果.