如何在SPAN旁边的DIV中获取文本

时间:2016-05-31 18:44:34

标签: javascript jquery html dom

我正在构建一个刮刀,我遇到了一些HTML,我不知道如何解析。我有一段这样的代码。

<div>
  <span>SomeHeader</span>
  "Some text"

  <span>SomeOtherHeader</span>
  "More text"
</div>

在JS或JQuery中,我想找到“SomeHeader”,并在没有“More Text”的情况下查找“Sometext”。

感谢任何帮助!

3 个答案:

答案 0 :(得分:1)

在引用DIV元素之后,可以使用其“textContent()”方法来提取DIV元素及其子元素中的所有文本。然后,这只是找到你正在寻找的东西的问题。您可以使用正则表达式,如“/ SomeHeader * /”,然后使用“/ SomeOtherHeader /”来提取您想要的内容......

答案 1 :(得分:1)

您可以使用:contains()选择器查找包含某些文本的元素,但此选择器并不精确。例如$("span:contains(Text)")选择底部的两个范围。

<span>Text</span>
<span>Text text</span>

您需要使用.filter( function )方法准确检查元素的文本,然后选择元素。选择元素后,使用nextSibling属性获取元素的兄弟文本。

var targetSpan = $("div > span").filter(function() {
    return $(this).text() === "SomeHeader";
});
var text = targetSpan[0].nextSibling.nodeValue.trim();

console.log(text);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <span>SomeHeader</span>
  "Some text"
  <span>SomeOtherHeader</span>
  "More text"
</div>

答案 2 :(得分:1)

您可以尝试这样的事情:

$('div')
    .contents()
    .filter(function () {
        if($(this).text() == "SomeHeader") {
          alert($(this)[0].nextSibling.nodeValue);
        }
    });

示例:https://jsfiddle.net/DinoMyte/bko2wsbu/1/