JQUERY遍历取文字怎么取?

查看:93
本文介绍了JQUERY遍历取文字怎么取?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

HTML结构如下:

<div class="nav-list"></div><!--nav-list是预留,用来存放插入的元素-->
<div class="box">
    <div class="box-content">
        <div class="box-item">
            <h1>主标题1</h1><!--主标题1下包含三个副标题-->
            <i>副标题1</i>
            <div class="content">我是内容1</div>
            <i>副标题2</i>
            <div class="content">我是内容2</div>
            <i>副标题3</i>
            <div class="content">我是内容3</div>
        </div><!--这是第一个元素,为当前显示元素,其余元素隐藏-->
        <div class="box-item">
            <h1>主标题2</h1>
            <i>副标题1</i>
            <div class="content">我是内容1</div>
        </div>
        <!--主标题2-->
        <div class="box-item">
            <h1>主标题3</h1>
            <i>副标题1</i>
            <div class="content">我是内容1</div>
        </div>
        <!--主标题3-->
    </div>
</div><!--box 容器,只显示其中一个元素-->

以上是HTML结构,想要实现的效果如下

<div class="nav-list">
    <h3>主标题1</h3>
    <div class="item-list">
        <ul>
            <li>副标题1</li>
            <li>副标题2</li>
            <li>副标题3</li>
        </ul>
    </div>
    <!--获取上面代码 box-content 里的代码的-->
    <!--主标题和副标题并使用以上结构插入nav-list里。-->
    
    <h3>主标题2</h3>
    <div class="item-list">
        <ul>
            <li>副标题1</li>
        </ul>
    </div>
    <h3>主标题3</h3>
    <div class="item-list">
        <ul>
            <li>副标题1</li>
        </ul>
    </div>
</div>

这个nav-list原本为空,主要用于获取box-content里的信息。并以新格式插入nav-list里。我用each遍历,可以获取,但,副标题输出却为一行。而不是一个一个的。比如获取后变成<li>副标题1副标题2副标题3</li>,还有一种情况是,每个主标题下全部输出出来,如:

<ul>
    <li>副标题1</li>
    <li>副标题2</li>
    <li>副标题3</li>
    <li>副标题1</li>
    <li>副标题1</li>
    <li>副标题1</li>
</ul>
<!--每个主标题下全是以上内容-->

不知道该如何进行了,所以特来请教各位,还望给予帮助解决,先谢谢啦。

解决方案

  //存放主标题和副标题信息
  //格式为 {主标题:['副标题1','副标题2']}
  var titleObj = {}; 
  $('.box-item').each(function (index,item) {
    var $item = $(item);
    var mainTitle = $item.children('h1').text();
    titleObj[mainTitle] = [];
    $item.children('i').each(function (index,item) {
      titleObj[mainTitle].push($(item).text())
    })
  })
  console.log(titleObj);
  
  
  //根据titleObj 生成html
  var titleHtml = '';
  for (var key in titleObj) {
    titleHtml += '<h3>'+key+'</h3>';
    
    var subTitle = titleObj[key];
    
    titleHtml += '<div class="item-list"><ul>';
    
    for (var i = 0, len = subTitle.length; i < len; i++) {
      titleHtml += '<li>'+subTitle[i]+'</li>';
    }
    
    titleHtml += '</ul></div>';
    
  }

  
  $('.nav-list').html(titleHtml);

这篇关于JQUERY遍历取文字怎么取?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆