使用JQuery从嵌套跨度中获取文本

时间:2017-07-30 06:21:27

标签: javascript jquery html css

我很难使用jquery来获取嵌套范围中的文本值。可以说我有以下结构:

<span class='token tag'>
    <span class='token tag'>
        <span class='token punctuation'> < </span>
            div
        </span>
    ...

我的目标是获取文本div。此模式适用于所有开始标记的名称,我想选择在此模式后选择具有匹配名称(所有div)的所有元素。我有以下内容:

$(this.state.$html.filter('.token.tag:has(> .token.tag):has(> .token.punctuation).children()[3]).text()

这是我迄今为止最好的尝试,但不成功。

2 个答案:

答案 0 :(得分:3)

如果您希望嵌套范围内的文本,最好将搜索应用于span标记,以便它可以消除div之类的其他元素。

因此,如果您有一个具有相同类的嵌套div,则不会选择它。

var txt = $("span.token.tag > span.token.tag > span.token.punctuation").text()
console.log(txt);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<span class='token tag'>
  <span class='token tag'>
    <span class='token punctuation'>div</span>
  </span>
</span>

<div class='token tag'>
  <div class='token tag'>
    <div class='token punctuation'>div2</div>
  </div>
</div>

答案 1 :(得分:0)

var div  = $('.token').find('span.tag').children('span').text();
console.log(div)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class='token tag'>
    <span class='token tag'>
        <span class='token punctuation'>div</span>
    </span>
</span>

尝试这个。