如果我有
<ul>
<li>...</li>
<li>...</li>
<li>Text before nested content
<ul>
<li>...</li>
<li>...</li>
</ul>
</li>
</ul>
如何在Text before nested content
不将其存储在元素中的情况下仅通过 JavaScript 访问?
如果我有
<ul>
<li>...</li>
<li>...</li>
<li>Text before nested content
<ul>
<li>...</li>
<li>...</li>
</ul>
</li>
</ul>
如何在Text before nested content
不将其存储在元素中的情况下仅通过 JavaScript 访问?
这里也是 jQuery 解决方案。
您可以设置一个class
或id
您的li
元素(任何可以让您element
轻松选择的元素)并使用以下代码获取您想要的数据:
$("<SELECTOR FOR LI>")
.clone() // clone the element
.children() // select all the children
.remove() // remove all the children
.end() // again go back to selected element
.text(); // get the text of element
更多详情,请阅读这篇文章。您还可以在JSFiddle
中查看这个工作示例。
更新
您也可以使用pure JavaScript
.
就iterate
在子节点上方(如果至少有一个),检查节点类型(3
,表示它是 a text node
),如果是true
,concat
它是文本和其余部分。
这是JSFiddle中的工作示例。
有关节点类型的更多信息,请查看此链接。此外,您可以在此处找到有关和属性的
有用信息。nodeType
nodeName
nodeValue
您应该迭代直到找到嵌套内容,然后返回将包含文本的第一个 childNode。
var top = document.getElementsByTagName("ul")[0];
for( var child in top ){
var c = top[child];
if( !c.hasOwnProperty("nodeName") )continue;
if( c.children.length > 0 ){
alert(c.childNodes[0].textContent);
break;
}
}