2014-01-06 82 views
3

所以我觉得我的标题几乎含糊不清,但事实是,我甚至不知道如何澄清...因此这个问题。兄弟姐妹/儿童/父母的JQuery选择器

的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') 

现在,我知道这不是有效的编码,但它只是作为一个简单的例子。有了它,我会找到所有.foo类别.stuff的子女。

如果我用这个:

$(this).siblings('.stuff .foo') 

我不会发现任何东西。这可能是我对jquery谈话的经验不足,但为什么不会有那种类型的选择器(你称之为使用空间的选择器或者同时使用这两个选择器的选择器,如'.stuff.foo'?)可以使用.siblings之类的东西工作?我的期望是,它会找到.stuff级别的所有兄弟姐妹,然后找到.stuff的所有子级和.foo级别的所有子级。这是不是工作,因为兄弟姐妹/孩子/父母正在寻找兄弟姐妹/父母/孩子,不会看过去?

我知道我可以用这个:

$(this).siblings('.stuff').children('.foo') 

,我实现我的目标。我只是好奇,为什么我的上面的选择器(如果这是它正确调用)不起作用。

在此先感谢!

+0

@PranavRam所以这是因为'.stuff foo'永远不会是任何事情的兄弟姐妹,对吧? – Aarmora

+0

这是无效的HTML标记 –

+0

@ A.Wolff我不觉得HTML是真正关键的问题,除了知道'.stuff'和'$(this)'是兄弟姐妹和'.foo'是孩子'.stuff'。我错了吗? – Aarmora

回答

2

你回答了你自己的问题,你不会找到任何与$(this).siblings('。stuff .foo')的东西,因为.foo不是$(this)的兄弟,它有点像'孙子'。使用该选择器,它将查找拥有.stuff父母的.foo兄弟姐妹,而您拥有$(this),.stuff和.foo的同胞,.stuff的孩子,而不是$(this )。

+0

这就是我的想法。谢谢! – Aarmora