将HTML元素树解析为jQuery中的嵌套括号符号表达式

时间:2015-07-29 07:09:25

标签: javascript jquery

简单地说,如何从包含如下嵌套的其他元素的HTML元素开始:

<div class="box">
  <div class="box">
    <div class="obj">1</div>
    <div class="obj">2</div>
    <div class="obj">3</div>
  </div>
  <div class="box">
    <div class="obj">a</div>
    <div class="obj">b</div>
    <div class="obj">c</div>
  </div>
</div>

到这样的字符串:

((1 2 3) (a b c))

使用jQuery?

2 个答案:

答案 0 :(得分:2)

你可以这样做:

var string = '(' + $('.box .box').map(function() { 
        return '(' + $(this).find('.obj').map(function() { return $(this).text(); }).get().join(' ') + ')';
    }).get().join(' ') + ')';

alert(string);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="box">
  <div class="box">
    <div class="obj">1</div>
    <div class="obj">2</div>
    <div class="obj">3</div>
  </div>
  <div class="box">
    <div class="obj">a</div>
    <div class="obj">b</div>
    <div class="obj">c</div>
  </div>
</div>

输出:((1 2 3) (a b c))

答案 1 :(得分:0)

您可以使用每个功能读出所有项目。 在变量文本中,您将获得具有类.obj的每个元素的单个文本。

    var string = "";
    $(".box").each(function(){
       $(".obj").each(function(){
          var text = $(this).text();
          string += text;
       });
    });

在每个函数中,您还可以根据需要格式化变量。