我需要从id为mycenter的div中获取文本,但我不想要标题文本,即
<h2>This is my Title</h2>.
我只想要标题后面的文字。此外,有时div不包含任何标题。
我试过了:
var pageText = $('#mycenter').text();
这正确地返回div中的文本,但这包括“这是我的标题”。
关于我如何做到这一点的任何线索?
由于
答案 0 :(得分:3)
一种解决方案可以是
var pageClone = $('#mycenter').clone();
pageClone.find(':header').remove();
var pageText = pageClone.text();
pageClone.remove();
这很好,效率可能很低,但可能会满足您的需求。
答案 1 :(得分:3)
Hej Regis
所以你可以做的就是克隆div并删除你不想要的标签 像这样
var text = $("div").clone()
.find("h2").remove().end()
.text();
alert(text);
我希望这会有所帮助
答案 2 :(得分:2)
$("#mycenter *").not("h2").text()
OR
$("div :not('h2')").text() // see example below and this will make sense.
答案 3 :(得分:2)
使用jQuery的contents()
function获取所有子节点,包括文本节点。然后根据需要过滤集合,最后从剩余集合中提取文本。
给出一个像这样的文档片段:
<div id="mycenter">
some text 1
<h2>The header</h2>
some text 2
<div>other stuff</div>
<h1>another header</h1>
</div>
选项#1 :仅返回#mycenter
的直接子项文本,从而排除所有子元素的文本(不仅仅是h *元素):
$('#mycenter').contents().filter(function() {
return this.nodeType == 3;
}).text();
给我们:
some text 1
some text 2
选项#2 :返回所有后代文本,但#mycenter的直接子元素(H1-H6)元素的内容除外:
$('#mycenter').contents().not('h1,h2,h3,h4,h5,h6').text();
给我们:
some text 1
some text 2
other stuff
答案 4 :(得分:0)
我使用正则表达式路线,但是当你使用jQuery时我会选择@ Lee的解决方案。
var pageText = $('#mycenter').html().replace(/\<h2\>.*\<\/h2\>/, '')
.replace( /^\s+|\s+$/g, '' );