如何获取当前元素的文本内容, 但不包含子元素内的文本内容?

2016-03-18 19:06:35 +08:00
 icebitch

HTML 这样

<div>
	<span> thanks </span>
a lot
</div>

但是通过 $("div").text(); 结果把 span 标签里的内容也输出了 如何只获取 a lot?

3969 次点击
所在节点    jQuery
9 条回复
wellsc
2016-03-18 19:43:48 +08:00
看 api 文档去吧。
yangg
2016-03-18 20:06:44 +08:00
非 IE 可以$(div)[0].childNodes[1].nodeValue IE 要清空文本节点
icebitch
2016-03-18 20:16:11 +08:00
@yangg 谢谢!!! 我就在 Firefox 下写个小脚本..组合替换下标题
请问这方面的内容要搜什么看呢 , 我看的 W3 教程 , 没有提到这种用法的~ 搜索也搜索不来 , 嵌套标签什么的都搜不到可以参考的内容!!!
Lpl
2016-03-18 20:19:30 +08:00
var $temp = $("div span");
$temp.remove();
console.log($("div").text());
$("div").prepend($temp);

大概就这个吧,思路是:先把 span 标签删除,然后获取 div 的内容,然后恢复 span 标签就可以了。由于操作很快,基本不会元素删除恢复的视觉效果。
建议尽量一个萝卜一个坑,一个值域一个标签
Kokororin
2016-03-18 20:19:36 +08:00
var clone = $('div').clone();
clone.children().remove();
console.log(clone.text());
chairuosen
2016-03-18 20:21:26 +08:00
换一种思路 $('div').clone().children().remove().end().text()
coolzjy
2016-03-18 20:56:54 +08:00
遍历下 childNode 取 nodeType 为 3 的即可吧
MOxFIVE
2016-03-19 02:34:38 +08:00
$("div").contents().not($("div").children()).text();

$("div").contents().filter(function(){return this.nodeType == 3;}).text();

http://codepen.io/MOxFIVE/pen/rejRZr?editors=1010
icebitch
2016-03-19 17:52:17 +08:00
@MOxFIVE 这个刁 , 学习了!!!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/264562

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX