如何获取没有子元素的元素文本

时间:2014-10-14 09:28:47

标签: javascript jquery html

如何在没有文本内容的情况下获取元素文本?

示例:

<div>
    hi
    <div>
        asd
    </div>
</div>

我想只得到&#39; hi&#39;。

我的代码现在它在jQuery中工作,但是我需要在javascript中使用相同的功能(没有jQuery):

object.name = $html.find('.title').clone().children().remove().text();

非常感谢你。

4 个答案:

答案 0 :(得分:1)

从jQuery获得对div的引用后,我假设它有类title

&#13;
&#13;
var div = document.getElementsByClassName('title')[0]; //get the reference to the parent div
var name = div.firstChild.nodeValue;

alert(name)
&#13;
<div class="title">
  hi
  <div>
    asd
  </div>
</div>
&#13;
&#13;
&#13;


如果你想使它复杂化

&#13;
&#13;
var div = document.getElementsByClassName('title')[0]; //get the reference to the parent div
var array = [].map.call(div.childNodes, function(child) {
  return child.nodeType == 3 && child.nodeValue.trim() ? child.nodeValue.trim() : undefined;
})
var name = array.join();

alert(name)
&#13;
<div class="title">
  hi
  <div>
    asd
  </div>
  this also
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

你可以这样写:

alert($(".title").clone().children().remove().end().text())

段:

$(function(){
  alert($(".title").clone().children().remove().end().text());
});
<script src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
<div class="title">
  hi
  <div>
    asd
  </div>
</div>

或者在jquery中编写自己的函数in this SO post,并在需要的地方重用它。

jQuery.fn.justtext = function() {

    return $(this).clone()
            .children()
            .remove()
            .end()
            .text();

};

alert($('#mydiv').justtext());​

答案 2 :(得分:0)

以下代码有效......

$('div').filter(function(){
    console.log( $.trim($(this).clone().context.firstChild.data) );
});

答案 3 :(得分:-1)

如果你想打个招呼,试试这个:

var element = $("div:first").text();