如果我有
<div id='wrapper'>
<fieldset id='fldset'>
<legend>Title</legend>
Body text.
</fieldset>
</div>
如何在不检索图例标记内的文本的情况下检索“正文”?
例如,如果我想查看字段集中的文本是否包含单词“body”并更改该单词,而忽略了图例中可能包含的内容? innerHTML检索所有子节点的所有文本。
使用jQuery不会有问题。
答案 0 :(得分:4)
$("#fldset").contents().eq(2).text();
答案 1 :(得分:3)
没有图书馆 -
var fldset = document.getElementById("fldset"),
txt = fldset.lastChild.textContent || fldset.lastChild.innerText;
alert(txt);
答案 2 :(得分:2)
这将使fldset
的所有文本节点遗漏任何其他元素及其内容:
var fldsetContent = $('#fldset').contents();
var text = '';
$(fldsetContent).each( function(index, item) {
if( item.nodeType == 3 ) text += $.trim($(item).text());
});
alert( text );
<强> Live example 强>
答案 3 :(得分:1)
$('#fldset').clone().find('legend').remove().end().text()
但你也应该搜索SO
答案 4 :(得分:0)
我想不出除
之外的其他方式$("#result").html($("#wrapper").text().replace($("legend").text(),""));
但应该有一个更优雅的方式。您还可以创建一个新元素作为此元素的副本,删除所有子元素并获取文本。嗯... 那将是:
var newElement = $("#fldset").clone();
newElement.children().remove();
$("#result").html(newElement.text());
所以无论子节点有多少和哪种类型,这都行不通。这里:http://www.jsfiddle.net/wFV4c/
答案 5 :(得分:0)
要将字段内的所有纯文本节点设置为红色:
jQuery.each($('#fldset').contents(),function(index,value){
if(value.textContent == value.nodeValue){
$(this).wrap('<span style="color:red;" />')
}
});