2010-07-03 94 views
13

我有一個溫和的偏好解決這個純JS,但如果jQuery版本更簡單,那麼jQuery也很好。有效的情況是這樣的得到一個元素的內容沒有它的孩子

<span id="thisone"> 
The info I want 
<span id="notthisone"> 
    I don't want any of this nonsense 
</span> 
</span> 

我切實想
The info I want
但不
The info I want I don't want any of this nonsense
,我特別不希望
The info I want <span id="notthisone"> I don't want any of this nonsense </span>
這是不幸的是什麼,我得到的權利現在...

我該怎麼做?

回答

27

由於只有JS:

試試看:http://jsfiddle.net/g4tRn/

var result = document.getElementById('thisone').firstChild.nodeValue;  

​alert(result);​ 

使用jQuery:

試試看:http://jsfiddle.net/g4tRn/1

var result = $('#thisone').contents().first().text(); 

alert(result);​ 

獎勵:

如果有,你想要得到的外<span>其他文本節點,你可以做這樣的事情:

試試看:http://jsfiddle.net/g4tRn/4

var nodes = document.getElementById('thisone').childNodes; 
var result = ''; 

for(var i = 0; i < nodes.length; i++) { 
    if(nodes[i].nodeType == 3) {  // If it is a text node, 
     result += nodes[i].nodeValue; // add its text to the result 
    } 
} 

alert(result); 
​ 
+0

@richardtallent - 你是說像混合動力?確實如此。少一點這樣的代碼。 http://jsfiddle.net/g4tRn/2/ – user113716 2010-07-03 17:11:03

1

你有沒有嘗試過這樣的事情?

var thisone = $("#thisone").clone(); 
thisone.children().remove(); 
var mytext = thisone.html(); 
+0

'.text()'在最後,當然? – bobince 2010-07-03 18:04:18

3

如果你只是想要第一個孩子,那麼它很簡單。如果你正在尋找第一個純文本元素,那麼這段代碼將需要一些修改。

var text = document.getElementById('thisone').firstChild.nodeValue; 
alert(text); 
相關問題