我正在编写一个用以下一般结构解析页面的润滑脂脚本:
<table>
<tr><td><center>
<b><a href="show.php?who=IDNumber">(Account Name)</a></b>
(#IDNumber)
<br> (Rank)
<br> (Title)
<p>
<b>Statistics:</b>
<br>
<table>
<tr><td>blah blah etc.
</td></tr></table></center></table>
我正在专门尝试从中获取(标题)部分。如您所见,它仅由
<BR>
标记引起,没有自己的ID,仅是<CENTER>
标记的文本的一部分,并且该标记具有与之关联的其他所有文本。现在,我要做的就是获取Center标记的innerHTML并在其上使用正则表达式以匹配
/<br>([A-Za-z ]*)<p><b>Statistics/
。这对我来说还可以,但是感觉好像有一种更好的方法可以从中选择特定的文本。...因此,有没有更好的方法?还是我应该向站点程序员抱怨他需要使该文本更易于访问? :-)
最佳答案
编辑:更新以删除空格
var title = $('table center').contents().filter(function() {
if( this.nodeType == 3 && $.trim(this.data) != "") { //get only text nodes and filter out whitespace elements
return true;
}
}).get(2); // get the 3rd text node
alert( title.data ); // alerts "(Title)
title.data = "How to use jQuery"; // (Title) changes
这个怎么运作:
该函数在提供的节点中的所有节点上运行,在本例中为中心标记。文本是nodeType 3,因此您将获得这些数组。您的示例的右中心标记放错了位置,因此可能会给您带来错误,但我认为您已经明白了。 (我认为您在此之前缺少a)
您总是可以:
$('table center').contents().filter(function() {
if( this.nodeType == 3 && $.trim(this.data) != "") { //get only text nodes and filter out whitespace elements
return true;
}
}).wrap('<p></p>') // make those text nodes paragraphs
.end().filter('br')
.remove(); // remove the brs
看到jquery docs on .contents()
关于javascript - 在JS/JQuery中通过DOM获取BR分隔的文本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2907991/