1

例如:

<div id="headerWrapper">
                <H1>TEST</H1>
                <div id="paarofileLinks">
                    <ul id="primaryNav" role="navigation">
                        <li id="musicNav" class="navItem">
                            <a href="/music" class="nav-link">Music</a>
                        </li>
                        <li id="listenNav" class="navItem">
                            <a href="/listen" class="nav-link">Radio</a>
                        </li>
                        <li id="eventsNav" class="navItem">
                            <a href="/events" class="nav-link nna" id="vbulletin_css2">Events</a>
                        </li>
                        <li id="chartsNav" class="navItem">
                            <a href="/charts" class="nav-link">Charts</a>
                        </li>
                        <li id="communityNav" class="navItem">
                            <a href="/community" class="nav-link">Community</a>
                        </li>
                        <li id="originalsNav" class="navItem">
                            <div>
                                <a href="http://originals.last.fm" class="nav-link">Originals</a>
                            </div>

                        </li>
                    </ul>
                </div>

如果我使用这个选择器

$("#headerWrapper").children("*");

它会得到所有的孩子,但我需要回来

<H1>TEST</H1> 
<div id="paarofileLinks"></div>

没有<ul>和剩余的列表

注意:我不知道页面的结构,所以我需要一些通用的东西并且可以处理所有结构

4

1 回答 1

4

与 不同find()children()仅返回给定元素的直接子元素。

因此,您的查询应该完全按照您的要求进行,并且只返回有问题的两个元素。如果不是这种情况,那么还有其他问题。使用几乎与您完全相同的代码查看示例代码片段,并给出正确的结果:

$("#headerWrapper").children().each(function(){console.log(this)});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="headerWrapper">
  <H1>TEST</H1>
  <div id="paarofileLinks">
    <ul id="primaryNav" role="navigation">
      <li id="musicNav" class="navItem">
        <a href="/music" class="nav-link">Music</a>
      </li>
      <li id="listenNav" class="navItem">
        <a href="/listen" class="nav-link">Radio</a>
      </li>
      <li id="eventsNav" class="navItem">
        <a href="/events" class="nav-link nna" id="vbulletin_css2">Events</a>
      </li>
      <li id="chartsNav" class="navItem">
        <a href="/charts" class="nav-link">Charts</a>
      </li>
      <li id="communityNav" class="navItem">
        <a href="/community" class="nav-link">Community</a>
      </li>
      <li id="originalsNav" class="navItem">
        <div>
          <a href="http://originals.last.fm" class="nav-link">Originals</a>
        </div>

      </li>
    </ul>
  </div>
</div>

旁注:您使用的选择器不是必需的,因为children()children("*")在语义上是等效的。

于 2012-07-10T12:35:56.783 回答