jQuery:只选择第一级子节点

时间:2011-08-19 21:20:51

标签: jquery jquery-selectors

我正在尝试使用jQuery做一些相当容易的工作。 我想要的只是选择所选节点的sibbling,以及 NOT 一个sibbling的孩子!

<div id="test">
    <p>First Paragraph
        <p class='border2'>SUB paragraph
            <p class='border3'>SUB SUB paragraph</p>
        </p>
    </p>
    <p>Second Paragraph</p>
    <p>Third Paragraph</p>
    <p>Fourth Paragraph</p>
</div>

此刻我尝试了很多不同的事情,但他们没有按预期行事。我试过了,例如:

  • $("div").find("p").andSelf().addClass("border");
  • $("div > p").addClass("border");
  • $("div p:first").nextAll().andSelf().addClass("border");
  • $("#test ~ p").addClass("border");

我的代码段可以在jsFiddle找到。

2 个答案:

答案 0 :(得分:7)

您将无法使用,因为您的标记无效。

您无法在<p>中嵌套<p>,因此浏览器会将嵌套的p踢出去。

Here's your fiddle但是使用更新的CSS来显示它们已不再嵌套。

您只能在<p>

中嵌套内嵌元素

答案 1 :(得分:1)

您的问题是由于

引起的
  

P元素代表一个段落。它不能包含块级元素(包括P本身)。

取自 The Specs

浏览器将每个段落视为原始div的直接子段,因为它不能包含在不同的p中。你选择了错误的元素来处理:)