<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>
僅要獲取 Trouble Ticket 怎么寫(xiě)?謝謝
人生最曼妙的風(fēng)景,竟是內(nèi)心的淡定與從容!
先clone 元素,然后移除子元素,最后獲取的是不包含子元素的文本
jQuery('.js-anviz-body').clone().children().remove().end().text()
這個(gè)問(wèn)題之前我也回答過(guò)類(lèi)似的,這個(gè)文本在遍歷nodeChild的時(shí)候,是Text()
的實(shí)例,可以參見(jiàn)我之前回答的問(wèn)題:/q/10...
題主的問(wèn)題理解起來(lái)應(yīng)該是想獲取屬于父元素但不屬于子元素的所有文本吧
假設(shè)知道文本位置,那就簡(jiǎn)單些,如果文本在一開(kāi)始:
//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
如果文本位置不確定,甚至有多個(gè)的時(shí)候,這個(gè)時(shí)候就要遍歷父元素的兒子元素,尋找所有節(jié)點(diǎn)屬性為文本的元素:
//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的方法好一點(diǎn),萬(wàn)一p標(biāo)簽后面還有文本呢?
用firstChild只取到了第一個(gè)文本節(jié)點(diǎn),還要遍歷才能取到后面的文本節(jié)點(diǎn)。
var content = $('.anviz-ellipsis').parent().html().replace(/<[\s\S]*>/g, '');
console.log(content);
打印結(jié)果:
// 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>