2010-07-03 99 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); 
相关问题