在JS / JQuery中通过DOM获取BR分隔文本?

我正在编写一个使用以下通用结构解析页面的greasemonkey脚本:

(Account Name) (#IDNumber)
(Rank)
(Title)

Statistics:

blah blah etc.

我特意试图从中获取(标题)部分。 然而,正如您所看到的,它仅由
标签引发,没有自己的ID,只是标签文本的一部分,并且该标签有大量其他文本与之关联它。

现在我正在做的是获取Center标签的innerHTML并使用正则表达式来匹配/
([A-Za-z ]*)

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,因此您将获得这些数组。 你的例子关闭中心标签放错位置,这可能会给你错误,但我认为你明白了。 (我想你之前错过了一个)

你总是可以:

  $('table center').contents().filter(function() { if( this.nodeType == 3 && $.trim(this.data) != "") { //get only text nodes and filter out whitespace elements return true; } }).wrap('

') // make those text nodes paragraphs .end().filter('br') .remove(); // remove the brs

查看.contents()上的jquery文档

这似乎有效:

 var result = $('table td:first-child > center > br:eq(1)').get(0) alert(result.nextSibling.nodeValue);