我有一个用例,我有一个只有一个孩子的父 div,孩子可能很强壮,div,标题或任何其他......我需要一个通用的解决方案来获取孩子“Hello World”的 innerHTML
<div id="parent">
<strong>Hello World</strong>
</div>
在 jquery 或 js 中执行此操作的有效方法是什么???
我有一个用例,我有一个只有一个孩子的父 div,孩子可能很强壮,div,标题或任何其他......我需要一个通用的解决方案来获取孩子“Hello World”的 innerHTML
<div id="parent">
<strong>Hello World</strong>
</div>
在 jquery 或 js 中执行此操作的有效方法是什么???
document.getElementById('parent').children[0].innerHTML
$("#parent").children();
$("#parent").children(':first');
如果它总是第一个孩子,你可以做$('#parent').children().first().text()
,或者,让所有孩子,$('#parent').children().text()
。
用 jQuery 试试这个:-
$("#parent").contents().filter(function(){
return this.nodeType == 3;
});
使用本机的建议childNodes[0]
有一个错误。
在您的示例 HTML 中,有一个textNode
出现在<strong>
您想要的元素之前。您将需要遍历 childNodes,直到到达非textNode
. 如果你尝试过,你也会遇到同样的问题.firstChild
。
本机 DOM.children
属性将在您的示例中起作用,但要小心:在 IE8 和以前的版本中,它还包括注释节点。
jQuery 的.children()
方法会为您过滤掉文本节点,因此这是一种更简单的方法。
使用 jQuery 的contents()
组合.filter
来过滤掉文本节点的建议是可行的,但没有必要;您可以.children()
改为使用并让它完成过滤文本节点的工作。
在 jQuery 中,这很容易......
$('#parent').children('strong').html();
jQuery:
$("#parent").children().html()
只是 JavaScript:
document.getElementById("parent").childNodes[0].innerHTML