2011-12-24 47 views
21

我有一個HTML:jQuery的:如何獲得唯一的直接文本沒有標籤(在HTML)

<strong>1)</strong>TEXT THAT I ONLY NEED<p>some par</p><ul>..</ul> 

我只需要「文本我只需要」未在withing任何標籤他的HTML,我怎樣才能得到它與jQuery?

謝謝。

+2

你[答案率(http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work)是相當低的,你應該看看,以紀念的問題,你的答案有人問(即使這意味着標記你自己的答案)。 – isNaN1247 2011-12-24 12:49:38

+1

可能重複的[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

回答

2

好,如果你使用jQuery,你會做

$('.selector').text(); 

more info and examples here

編輯:我剛纔看到你想,是不是在任何標籤的文本 - 嗯,這是不能直接(實際上是,HTML文檔中的每個文本都在一些HTML標籤內。)

在這種情況下,我會嘗試更改標記(最簡單的方法),以便所需的文本位於html標記內。 如果這是不可能的,你可以使用上面提到的text()方法從父元素中獲取整個文本,並且在你不得不減去你不想要的部分之後。

看到http://jsfiddle.net/3SSAR/1/有關如何減去字符串的例子..

只記得使用substr,而不是-減去字符串在javascript

+3

這將返回「1)TEXT,我只需要一些參數」。 http://jsfiddle.net/3SSAR/ – 2011-12-24 12:51:22

+0

它將返回所有嵌套標記 – WHITECOLOR 2011-12-24 12:52:50

+0

中的所有文本,請參閱我的編輯 – tmaximini 2011-12-24 12:53:09

-1

您的標記是不是最大的這一點。如果包裹文本,你想用一個跨度,如:

<span class="gettext">TEXT THAT I NEED</span> 

你可以在jQuery中使用$('.gettext').text();

+0

它不是我的標記我需要解析它 – WHITECOLOR 2011-12-24 12:52:07

+0

對不起,我沒有意識到,我你不能改變它。在這種情況下,我會建議像坦率的暴雪編輯的答案上面 – isNaN1247 2011-12-24 13:19:07

2

這很棘手,因爲文本位於文本節點中,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; 
+0

謝謝,鱈魚:.clone()。children(「strong,p,ul」)。remove().end().text()需要 – WHITECOLOR 2011-12-24 15:49:40

+0

@WHITECOLOR:該代碼將連接元素中的所有文本節點,因此它依賴於您沒有更多文本或子元素之間存在任何換行符。 – Guffa 2011-12-24 16:04:32

1

此代碼的工作對我來說:

var el = $("<div/>"); 
el.html(text).children().remove(); 
return el.text(); 
26

最好的辦法是到.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 
相關問題