$.prev("div.a").find('.b').
$.prev("div.a .b").
一个有效,另一个没有。有什么区别?
答案 0 :(得分:5)
嗯,选择器有效,它只是没有给你你想要的东西:
根据jQuery Docs .prev([expr])
:
获取一组包含的元素 每个独特的兄弟姐妹 匹配的元素集。用一个 可选表达式来过滤 匹配集。只有立即 以前的兄弟姐妹被退回,而不是全部 以前的兄弟姐妹。
这意味着:$(elem).prev("div.a").find('.b')
正在寻找DOM树中的任何先前兄弟div.a
并返回第一个 - 然后使用.find()
在该元素内搜索{{1} }}
然而:.b
正在寻找任何先前的兄弟$(elem).prev("div.a .b")
并返回第一个。
它们不等同,因此返回不同的结果。
答案 1 :(得分:0)
find()不搜索所选元素,只搜索它们的后代......所以如果.b类在div.a元素上,你将找不到它。
查找会找到:
<div class="a">
<div class="b">
但不是:
<div class="a b">