获取不在另一个标记内的元素的InnerHTML

时间:2014-10-08 13:26:36

标签: javascript jquery innerhtml

所以,如果我有

<div id="outside">
   Hello
   <div id="inside">
       Qwertyuiop
   </div>
</div>

如果不包含内部或任何其他HTML标记中的任何内容,我如何获取外部的InnerHTML? (基本上如何获得&#34;你好&#34;)

7 个答案:

答案 0 :(得分:4)

1一个有趣的选择:

这不是一个严肃的答案,它基于Darin Morris'极具破坏性的答案,但破坏性稍差:

// Clone the element
var $clone = $("#outside").clone();

// Remove all the children (leaves text nodes)
$clone.children().remove();

alert($clone.text());

http://jsfiddle.net/TrueBlueAussie/ez4v83v5/4/

我不会再推荐这个作为

的替代方案

2我认真的回答:

$('#outside')[0].firstChild.nodeValue

但谁知道......这种技术在某些时候可能派上用场了:)

答案 1 :(得分:3)

另一种选择:

$(function(){
   var theHtml = $("#outside");
   var texto = theHtml[0].childNodes[0].data;
   alert((texto));
});

工作小提琴:http://jsfiddle.net/robertrozas/vhdbj1ck/1/

答案 2 :(得分:2)

尝试在此上下文中使用.contents()

&#13;
&#13;
alert($("#outside").contents().first()[0].nodeValue);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="outside">
   Hello
   <div id="inside">
       Qwertyuiop
   </div>
</div>
&#13;
&#13;
&#13;

答案 3 :(得分:2)

你正试图获得第一个孩子的价值

&#13;
&#13;
alert($('#outside').prop('firstChild').nodeValue)
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="outside">
   Hello
   <div id="inside">
       Qwertyuiop
   </div>
</div>
&#13;
&#13;
&#13;

答案 4 :(得分:1)

Array.prototype.filter.call(document.querySelector('#outside').childNodes, function (node) {
    return node.nodeValue;
});

你也可以在Vanilla中尝试这个,如果你在div之后有其他字符串,它也会处理一个案例。

答案 5 :(得分:0)

可能有更好的方法可以做到这一点,但这应该适合你:

var kids = $("#outside").children();

for(var i = 0; i < kids.length; i++)
{
    if(kids[i].nodeType != 3)
    {
        $(kids[i]).remove();
    }
}

alert($("#outside").text());

请参阅此JSFiddle:http://jsfiddle.net/ez4v83v5/1

答案 6 :(得分:0)

尝试jquery api 孩子,试试fiddle

$(document).ready(function(){
    alert($('#outside').clone()    //clone the element
    .children() //select all the children
    .remove()   //remove all the children
    .end()  //again go back to selected element
    .text());

});
希望它有所帮助...