如何获取元素周围的文字?

如果我有

Title Body text.

如何在不检索图例标签内的文本的情况下检索“正文”?

例如,如果我想查看字段集内的文本是否包含单词“body”并更改该单词,而忽略了图例中可能包含的内容? innerHTML检索所有子节点中的所有文本。

使用jQuery不会有问题。

 $("#fldset").contents().eq(2).text(); 

没有图书馆 –

 var fldset = document.getElementById("fldset"), txt = fldset.lastChild.textContent || fldset.lastChild.innerText; alert(txt); 

这将使fldset所有文本节点fldset任何其他元素及其内容:

 var fldsetContent = $('#fldset').contents(); var text = ''; $(fldsetContent).each( function(index, item) { if( item.nodeType == 3 ) text += $.trim($(item).text()); }); alert( text ); 

实例

 $('#fldset').clone().find('legend').remove().end().text() 

但你也应该搜索SO

  • 使用.text()仅检索未嵌套在子标记中的文本
  • 使用jQuery剪辑内容

我想不出除了以外的其他方式

 $("#result").html($("#wrapper").text().replace($("legend").text(),"")); 

但应该有一个更优雅的方式 。 您还可以创建一个新元素作为此元素的副本,删除所有子元素并获取文本。 嗯…… 那将是

 var newElement = $("#fldset").clone(); newElement.children().remove(); $("#result").html(newElement.text()); 

所以无论子节点有多少和哪种类型,这都行不通。 这里: http : //www.jsfiddle.net/wFV4c/

要将字段内的所有纯文本节点设置为红色:

 jQuery.each($('#fldset').contents(),function(index,value){ if(value.textContent == value.nodeValue){ $(this).wrap('') } });