Удаление заголовков из текста jquery () - PullRequest
2 голосов
/ 01 октября 2011

Мне нужно получить текст из div с идентификатором mycenter, но мне не нужен текст заголовка, т.е.
<h2>This is my Title</h2>. Мне нужен только текст после заголовка.Кроме того, иногда div не содержит никакого заголовка.

Я пытался:

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

Это правильно возвращает текст в div, но это включает в себя «Это мой заголовок».

Любая подсказка о том, как я могу это сделать?

Спасибо

Ответы [ 5 ]

3 голосов
/ 01 октября 2011

Hej Regis

http://jsfiddle.net/buyms/

Так что вы можете сделать, это клонировать div и удалить теги в нем вы не хотите, как это

var text = $("div").clone()
   .find("h2").remove().end()
   .text();


alert(text);

Iнадеюсь, это поможет

3 голосов
/ 01 октября 2011

Одно решение может быть

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

Это очень хорошо, может быть неэффективно, но, вероятно, будет служить вашим потребностям.

2 голосов
/ 01 октября 2011

Используйте функцию contents() jQuery , чтобы выбрать все дочерние узлы , включая текстовые узлы. Затем отфильтруйте набор так, как вам нравится, и, наконец, извлеките текст из оставшегося набора.

Учитывая фрагмент документа, подобный этому:

<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 : Возврат всех потомков, кроме содержимого элементов заголовка (H1-H6), которые являются непосредственными потомками #mycenter:

$('#mycenter').contents().not('h1,h2,h3,h4,h5,h6').text();

дает нам:

some text 1
some text 2
other stuff 
2 голосов
/ 01 октября 2011
$("#mycenter *").not("h2").text()

ИЛИ

$("div :not('h2')").text() // see example below and this will make sense. 

Демонстрация: http://jsfiddle.net/Wer58/

0 голосов
/ 01 октября 2011

Я пошел по пути регулярного выражения, но так как вы все равно используете jQuery, я бы пошел с решением @ Lee.

var pageText = $('#mycenter').html().replace(/\<h2\>.*\<\/h2\>/, '')
        .replace( /^\s+|\s+$/g, '' );

Демо: http://jsfiddle.net/jkeyes/RpFjc/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...