我正在构建一个刮刀,我遇到了一些HTML,我不知道如何解析。我有一段这样的代码。
<div>
<span>SomeHeader</span>
"Some text"
<span>SomeOtherHeader</span>
"More text"
</div>
在JS或JQuery中,我想找到“SomeHeader”,并在没有“More Text”的情况下查找“Sometext”。
感谢任何帮助!
答案 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);
}
});