如何子过滤一个jquery对象,它是$(this)的子集

时间:2009-05-07 20:20:15

标签: jquery css-selectors

我一遍又一遍地阅读文档,我无法理解为什么这不起作用:

从函数内部调用以下内容:

alert($(this).parent().parent().html());

返回如下内容:

<div class="something1">
    <div class="whereThisStarted">stuff</div>
    </div>
<div class="something2">stuff</div>
<div class="somethingSpecial">stuff</div>
<div class="something4">stuff</div>

我想得到“特别的东西”。在我看来,以下任何一个都可以工作,但它们都返回null。

alert($(this).parent().parent().children(".somethingSpecial").html());
alert($(this).parent().parent().filter("div.somethingSpecial").html());

这有什么问题?

由于

3 个答案:

答案 0 :(得分:6)

如果你真的必须按照你想要的方式去做,而不是TStamper的表现,试试这个:

alert($(this).parent().parent().find("div.somethingSpecial").html());

答案 1 :(得分:2)

您可能想尝试最接近的功能 - 听起来更像是您想要做的事情:

jquery doc - closest()

此代码应该有效:

alert($(this).closest(".somethingSpecial").html());

或者你的$(this)在'startHere'div中的情况:

alert($(this).parent().closest(".somethingSpecial").html());

答案 2 :(得分:0)

我不确定为什么单独的孩子(“div.somethingSpecial”)不起作用但我只是意识到这也有效:

alert($(this).parent().parent().children().filter("div.charactersLeft").html());