<p class="mui-media-body js-media-body js-anviz-body">Trouble Ticket <p class="anviz-ellipsis js-des">You can sumbit your trouble and …</p> </p>
Wie schreibe ich, nur um ein Trouble Ticket zu bekommen? Danke
人生最曼妙的风景,竟是内心的淡定与从容!
最好还是加上个标签给包住,方便获取
var val = jQuery(this).find('.js-anviz-body')[0].firstChild.data;
OK!
先clone 元素,然后移除子元素,最后获取的是不包含子元素的文本
jQuery('.js-anviz-body').clone().children().remove().end().text()
document.querySelector('.mui-media-body').firstChild.nodeValue
这个问题之前我也回答过类似的,这个文本在遍历nodeChild的时候,是Text()的实例,可以参见我之前回答的问题:/q/10...
Text()
加个span包住比较合理
<html> <head> <title></title> <style type="text/css"> .parent{ width:100px; height:100px; } .child{ width:100px; height:50px; } </style> </head> <body> <p class="parent"> hello world, <p class="child">welcome!</p> </p> <script> var text = document.querySelector('.parent').firstChild.nodeValue; console.log(text); </script> </body> </html>
题主的问题理解起来应该是想获取属于父元素但不属于子元素的所有文本吧
假设知道文本位置,那就简单些,如果文本在一开始:
//pp = """<p class="mui-media-body js-media-body js-anviz-body">Trouble Ticket <p class="anviz-ellipsis js-des">You can sumbit your trouble and …</p> </p>""" var childNodes = pp.childNodes; var text = childNodes[0]; // Trouble Ticket
如果文本位置不确定,甚至有多个的时候,这个时候就要遍历父元素的儿子元素,寻找所有节点属性为文本的元素:
//pp = """<p class="mui-media-body js-media-body js-anviz-body"> Trouble Ticket <p class="anviz-ellipsis js-des">You can sumbit your trouble and …</p> Trouble Ticket2 </p>""" var childNodes = pp.childNodes; var textNodes = []; childNodes.forEach(function(node){ if (node.nodeType === 3) { textNodes.push(node); } // 3 为 文本 }); //textNodes === ['Trouble Ticket', 'Trouble Ticket2']
上面clone的方法好一点,万一p标签后面还有文本呢?用firstChild只取到了第一个文本节点,还要遍历才能取到后面的文本节点。
var content = $('.anviz-ellipsis').parent().html().replace(/<[\s\S]*>/g, ''); console.log(content); 打印结果: // Trouble Ticket
html代码:
<p class="mui-media-body js-media-body js-anviz-body">Trouble Ticket <p class="anviz-ellipsis js-des"> You can sumbit your trouble and … <!-- 混淆代码1 start--> <p>sdkfjfjfdlkfjsld</p> <a href="">3w33333</a> <!-- 混淆代码1 end--> </p> <!-- 混淆代码2 start--> <img src="" alt=""> <a href="">sdfsjflsjdflskdjf</a> <p> </p> <!-- 混淆代码2 end--> </p>
js代码:
<script> var content = $('.anviz-ellipsis').parent().html().replace(/<[\s\S]*>/g, ''); console.log(content); </script>
最好还是加上个标签给包住,方便获取
OK!
先clone 元素,然后移除子元素,最后获取的是不包含子元素的文本
这个问题之前我也回答过类似的,这个文本在遍历nodeChild的时候,是
Text()
的实例,可以参见我之前回答的问题:/q/10...加个span包住比较合理
题主的问题理解起来应该是想获取属于父元素但不属于子元素的所有文本吧
假设知道文本位置,那就简单些,如果文本在一开始:
如果文本位置不确定,甚至有多个的时候,这个时候就要遍历父元素的儿子元素,寻找所有节点属性为文本的元素:
上面clone的方法好一点,万一p标签后面还有文本呢?
用firstChild只取到了第一个文本节点,还要遍历才能取到后面的文本节点。
html代码:
js代码: