从jquery文本中删除标题()

时间:2011-10-01 02:35:49

标签: javascript jquery text

我需要从id为mycenter的div中获取文本,但我不想要标题文本,即 <h2>This is my Title</h2>.我只想要标题后面的文字。此外,有时div不包含任何标题。

我试过了:

var pageText = $('#mycenter').text();

这正确地返回div中的文本,但这包括“这是我的标题”。

关于我如何做到这一点的任何线索?

由于

5 个答案:

答案 0 :(得分:3)

一种解决方案可以是

var pageClone = $('#mycenter').clone();
pageClone.find(':header').remove();
var pageText = pageClone.text();
pageClone.remove();

这很好,效率可能很低,但可能会满足您的需求。

答案 1 :(得分:3)

Hej Regis

http://jsfiddle.net/buyms/

所以你可以做的就是克隆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. 

演示: http://jsfiddle.net/Wer58/

答案 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, '' );

演示: http://jsfiddle.net/jkeyes/RpFjc/