2010-12-21 19 views
1

如果我有如何在元素周圍獲取文本?

<div id='wrapper'> 
    <fieldset id='fldset'> 
    <legend>Title</legend> 
    Body text. 
    </fieldset> 
</div> 

我怎麼能檢索「正文文本」沒有傳說中檢索標記中的文本?

例如,如果我想查看fieldset中的文本是否包含單詞「body」並更改該單詞,而忽略圖例中的任何內容? innerHTML從所有子節點獲取所有文本。

使用jQuery不會是一個問題。

+0

[Clip content with jQuery]的可能重複(http://stackoverflow.com/問題/ 4480235/clip-content-with-jquery) – 2010-12-21 16:45:12

回答

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

這獲得了傳說標記的內容以及... http://www.jsfiddle.net/subhaze/FfSap/ – subhaze 2010-12-21 16:48:07

+0

此代碼完全依賴於兒童和地方文字是... – 2010-12-21 16:57:01

3

搜索沒有圖書館 -

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

alert(txt); 
0

我想不出比

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

其他的方式,但應該有一個更優雅的方式。您也可以創建一個新元素作爲此元素的副本,刪除所有子元素並獲取文本。嗯...... 這將是

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

所以不要緊多少以及哪些子節點的類型了,這是可行的。在這裏:http://www.jsfiddle.net/wFV4c/

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

0

要打開設置紅色場地內的所有純文本節點:

jQuery.each($('#fldset').contents(),function(index,value){ 
    if(value.textContent == value.nodeValue){ 
    $(this).wrap('<span style="color:red;" />') 
    } 
});