如何在没有文本内容的情况下获取元素文本?
示例:
<div>
hi
<div>
asd
</div>
</div>
我想只得到&#39; hi&#39;。
我的代码现在它在jQuery中工作,但是我需要在javascript中使用相同的功能(没有jQuery):
object.name = $html.find('.title').clone().children().remove().text();
非常感谢你。
答案 0 :(得分:1)
从jQuery获得对div
的引用后,我假设它有类title
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;
如果你想使它复杂化
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;
答案 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();