javascript - 创建每个 sibling 的 child 列表

标签 javascript jquery

我有多个部分和多个子部分。每个部分都应该有一个包含该部分内所有子部分 h3 标题的列表。鉴于此 HTML:

<div class="allwrap">
    <div class="main-section" id="m1">  
       <h2>Main-1-Headline</h2>
       <ul class="sub-sections-list">
           <!-- generate LIs of each [#main-1 > .sub-section h3 text] -->
       </ul>        
       <div class="sub-section" id="m1-s1">         
           <h3>Main-1-Sub-1-Headline</h3>
       </div>       
       <div class="sub-section" id="m1-s2">         
           <h3>Main-1-Sub-2-Headline</h3>
       </div>               
   </div>   
   <div class="main-section" id="main-2">
       <h2>Main-2-Headline</h2>
       <ul class="sub-sections-list">
           <!-- generate LIs of each [#main-2 > .sub-section h3 text] -->
       </ul>        
       <div class="sub-section" id="m2-s1">         
           <h3>Main-2-Sub-1-Headline</h3>
       </div>       
       <div class="sub-section" id="m2-s2">         
            <h3>Main-2-Sub-2-Headline</h3>
        </div>              
    </div>  
</div>

所以我迭代每个部分 H3 小节,现在有一个所有 h3 标题的数组,这不是我想要完成的:

var myList = [];
$('.main-section .sub-section').each(function(){
    myList.push($(this).find('h3').text());
}); 
$.each(myList, function(){
    var li = $('<li/>').appendTo('.sub-sections-list');
    $('<a/>').attr('href', '#').text(this).appendTo(li);
});

我怎样才能做到不是所有部分的所有 h3 标题都在列表中,而只有相应父部分的标题?结果应该如下所示:

Main-1-Headline(Main-section-1 开头)

  • 主 1 子 1 标题
  • 主 1 子 2 标题

    Main-1-Sub-1-标题(sub-section-1 的开头)

    这里有一些内容(为了简单起见,不在上面的 HTML 中)

    Main-1-Sub-2-Headline (sub-section-2 的开头)

    这里有一些内容(为了简单起见,不在上面的 HTML 中)

Main-2-Headline(Main-section-2 开头)

  • 主2子1标题
  • 主 2 子 2 标题

    Main-2-Sub-1-标题(sub-section-1 的开头)

    这里有一些内容(为了简单起见,不在上面的 HTML 中)

    Main-2-Sub-2-Headline (sub-section-2 的开头)

    这里有一些内容(为了简单起见,不在上面的 HTML 中)

最佳答案

我想你想要这个。

更新了短途演示

$('.main-section h3').each(function(){
  $(this).parent().prevAll(".sub-sections-list").append('<li><a href="#">'+$(this).text()+'</a></li>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="allwrap">
  <div class="main-section" id="m1">
    <h2>Main-1-Headline</h2>
    <ul class="sub-sections-list">
      <!-- generate LIs of each [#main-1 > .sub-section h3 text] -->
    </ul>
    <div class="sub-section" id="m1-s1">
      <h3>Main-1-Sub-1-Headline</h3>
    </div>
    <div class="sub-section" id="m1-s2">
      <h3>Main-1-Sub-2-Headline</h3>
    </div>
  </div>
  <div class="main-section" id="main-2">
    <h2>Main-2-Headline</h2>
    <ul class="sub-sections-list">
      <!-- generate LIs of each [#main-2 > .sub-section h3 text] -->
    </ul>
    <div class="sub-section" id="m2-s1">
      <h3>Main-2-Sub-1-Headline</h3>
    </div>
    <div class="sub-section" id="m2-s2">
      <h3>Main-2-Sub-2-Headline</h3>
    </div>
  </div>
</div>

老方法

$('.main-section').each(function() {
  var myList = [];
  $(this).find("h3").each(function() {
    myList.push($(this).text());
  });
  $subSectionList = $(this).find('.sub-sections-list');
  $.each(myList, function() {
    var li = $('<li/>').appendTo($subSectionList);
    $('<a/>').attr('href', '#').text(this).appendTo(li);
  });
});

关于javascript - 创建每个 sibling 的 child 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35886241/

相关文章:

jquery - 将 jquery.getJson 与 Google 的地理编码 HTTP 服务结合使用

php - 在 wordpress 中单击后不显示 Bootstrap 移动菜单

php ajax 发布请求

javascript - Jquery 函数可以在本地服务器上运行,但不能在实时服务器上运行?

javascript - 单击菜单时,菜单字段未关闭

javascript - 多个 jquery ui 工具提示定位

javascript - 事件循环如何处理媒体标签(<audio> 和 <video> 元素)?

javascript - 是否有可能在 react 组件标签之间传递文本?

javascript - 为什么 javascript crashToStart() 会抛出错误

jquery - 为什么 jQuery 没有集成到浏览器中