我觉得我的标题几乎是模棱两可的,但事实上我甚至不确定如何澄清...因此有这个问题。
Html
<tr>
<div class="thisis(this)inmyexample"></div>
<div class="stuff">
<div class="foo"></div>
</div>
</tr>
我的问题是关于选择器的区别。假设.stuff
是$(this)
的兄弟节点,如果我使用以下内容:
$(this).closest('tr').find('.stuff .foo')
现在,我意识到这样的编码方式并不高效,但这只是一个简单的例子。通过它,我将找到所有.stuff
的子类中的.foo
类。
如果我使用以下代码:
$(this).siblings('.stuff .foo')
我找不到任何东西。这可能是我对jQuery的经验不足所说的,但是为什么那种选择器(使用空格或两者都具有的选择器,例如
'.stuff.foo'
)不能与像.siblings这样的内容一起使用呢?我的期望是它会找到所有类为.stuff
的同级元素,然后找到所有.stuff
的子元素,其中包含类.foo
。它不起作用是因为siblings/children/parent只寻找同级/父级/子级,而不会超出这个范围吗?我知道我可以使用这个:
$(this).siblings('.stuff').children('.foo')
我已经实现了我的目标。只是好奇为什么我上面的选择器(如果这是它的正确称呼)不起作用。
提前感谢!
.stuff
和$(this)
是兄弟元素,而.foo
是.stuff
的子元素。我说的对吗? - Aarmorasiblings()
搜索所有兄弟元素,查看它们是否与给定的选择器匹配,如果没有任何兄弟元素与.stuff .foo
匹配,那么这就是非常简单的。例如,尝试使用siblings('.stuff:has(.foo)')
。 - adeneo