1

如果我有

<ul>
  <li>...</li>
  <li>...</li>
  <li>Text before nested content
    <ul>
      <li>...</li>
      <li>...</li>
    </ul>
  </li>
</ul>

如何在Text before nested content不将其存储在元素中的情况下仅通过 JavaScript 访问?

4

2 回答 2

2

这里也是 jQuery 解决方案。

您可以设置一个classid您的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),如果是trueconcat它是文本和其余部分。

这是JSFiddle中的工作示例。
有关节点类型的更多信息,请查看此链接此外,您可以在此处找到有关和属性的
有用信息。nodeTypenodeNamenodeValue

于 2013-09-26T06:18:58.767 回答
1

jsFiddle Demo

您应该迭代直到找到嵌套内容,然后返回将包含文本的第一个 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;
 }
}
于 2013-09-24T23:28:49.483 回答