我有一個HTML:jQuery的:如何獲得唯一的直接文本沒有標籤(在HTML)
<strong>1)</strong>TEXT THAT I ONLY NEED<p>some par</p><ul>..</ul>
我只需要「文本我只需要」未在withing任何標籤他的HTML,我怎樣才能得到它與jQuery?
謝謝。
我有一個HTML:jQuery的:如何獲得唯一的直接文本沒有標籤(在HTML)
<strong>1)</strong>TEXT THAT I ONLY NEED<p>some par</p><ul>..</ul>
我只需要「文本我只需要」未在withing任何標籤他的HTML,我怎樣才能得到它與jQuery?
謝謝。
好,如果你使用jQuery,你會做
$('.selector').text();
編輯:我剛纔看到你想,是不是在任何標籤的文本 - 嗯,這是不能直接(實際上是,HTML文檔中的每個文本都在一些HTML標籤內。)
在這種情況下,我會嘗試更改標記(最簡單的方法),以便所需的文本位於html標記內。 如果這是不可能的,你可以使用上面提到的text()
方法從父元素中獲取整個文本,並且在你不得不減去你不想要的部分之後。
看到http://jsfiddle.net/3SSAR/1/有關如何減去字符串的例子..
只記得使用substr
,而不是-
減去字符串在javascript
這將返回「1)TEXT,我只需要一些參數」。 http://jsfiddle.net/3SSAR/ – 2011-12-24 12:51:22
它將返回所有嵌套標記 – WHITECOLOR 2011-12-24 12:52:50
中的所有文本,請參閱我的編輯 – tmaximini 2011-12-24 12:53:09
您的標記是不是最大的這一點。如果包裹文本,你想用一個跨度,如:
<span class="gettext">TEXT THAT I NEED</span>
你可以在jQuery中使用$('.gettext').text();
。
它不是我的標記我需要解析它 – WHITECOLOR 2011-12-24 12:52:07
對不起,我沒有意識到,我你不能改變它。在這種情況下,我會建議像坦率的暴雪編輯的答案上面 – isNaN1247 2011-12-24 13:19:07
這很棘手,因爲文本位於文本節點中,jQuery不支持文本節點,僅支持元素。另外,因爲不同的瀏覽器以不同的方式處理HTML代碼中的空白區域,所以最終會在不同的瀏覽器中使用不同的節點集合。您不能只獲取節點,並依賴於所需的文本節點始終處於相同索引。
您可以使用jQuery來定位元素,並使用DOM來獲取其中的所有節點。
示例HTML:
<div id="test">
<strong>1)</strong>
TEXT THAT I ONLY NEED
<p>some par</p>
<ul>
<li>asdf</li>
<li>qwerty</li>
</ul>
</div>
使用jQuery找到DIV,使用[0]
得到的DOM元素了jQuery對象,而childNodes
屬性來獲取其子:
var nodes = $('#test')[0].childNodes;
然後,您可以使用jQuery循環遍歷節點以找到strong
元素的節點:
var index;
$.each(nodes, function(i,e){
if (e.tagName == 'STRONG') {
index = i;
return false;
}
});
現在你可以使用DOM從下一個節點獲取文本值:
var text = nodes[index + 1].nodeValue;
謝謝,鱈魚:.clone()。children(「strong,p,ul」)。remove().end().text()需要 – WHITECOLOR 2011-12-24 15:49:40
@WHITECOLOR:該代碼將連接元素中的所有文本節點,因此它依賴於您沒有更多文本或子元素之間存在任何換行符。 – Guffa 2011-12-24 16:04:32
此代碼的工作對我來說:
var el = $("<div/>");
el.html(text).children().remove();
return el.text();
最好的辦法是到.clone()
你的對象,.remove()
所有其.children()
,然後回到使用.end()
對象,最後得到.text()
。
該方法描述於this blog post。
$("strong")
.clone() //clone the element
.children() //select all the children
.remove() //remove all the children
.end() //again go back to selected element
.text(); //get the text of element
你[答案率(http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work)是相當低的,你應該看看,以紀念的問題,你的答案有人問(即使這意味着標記你自己的答案)。 – isNaN1247 2011-12-24 12:49:38
可能重複的[jQuery:使用.text()檢索僅嵌入子標籤中的文本](http://stackoverflow.com/questions/3442394/jquery-using-text-to-retrieve-only-text-not -In-child-tags) – 4imble 2015-02-04 09:12:53