Использование jquery для замены <br>пробелом - PullRequest
6 голосов
/ 13 января 2012

Я импортирую ленту RSS в Facebook, и во многих сообщениях отсутствует заголовок. Так что в этом случае я хочу извлечь некоторый контент из тела и использовать его в качестве заголовка. Проблема в том, что содержимое тела может выглядеть так ...

Lorem ipsum<br>www.youtube.com<br>dolor sit amet.

Я не могу просто удалить теги br, потому что это станет пробежкой по предложению. Я бы предпочел заменить теги одним пробелом или запятой на пробел. Я пробовал следующий код, но, похоже, он не работает.

$('.teaser-title br').replaceWith(' ');

Мысли

Ответы [ 7 ]

12 голосов
/ 13 января 2012

Описание

2 Возможные проблемы

  1. У вас нет элемента с классом teaser-title.
  2. Вы не дождетесь полной сборки DOM

В любом случае, это работает

Пример

<div class="teaser-title">
    Lorem ipsum<br>www.youtube.com<br>dolor sit amet.
</div>

<script>
$(function() {
   $('.teaser-title br').replaceWith(' ');
});
</script>

Проверьте это jsFiddle

4 голосов
/ 13 января 2012

Размещение, потому что это может быть сделано! Могли бы использовать CSS: P

(работает только в webkit, поэтому не очень рекомендуется)

.teaser-title br{
    content:"";
}

.teaser-title br:after{
   content:" ";
}

Демонстрация в реальном времени

2 голосов
/ 13 января 2012
$(function() {
    $(".teaser-title br").replaceWith("&nbsp;");
});
1 голос
/ 13 января 2012

Я не могу просто удалить теги br, потому что это станет проверкой предложения.

Поскольку вы беспокоитесь о запуске предложений, вы можете заменить <br>s с <wbr> с.

HTML5 описывает <wbr>, таким образом:

Элемент wbr представляет возможность разрыва строки.

0 голосов
/ 13 января 2012

Ваш код работает хорошо.Вот еще один способ:

$('.teaser-title br').after(' ').remove();
//$('.teaser-title br').replaceWith(' '); // your solution works too!

демо

0 голосов
/ 13 января 2012

вы пытаетесь заменить элемент, и вам нужно заменить только innerHtml .teaser-title, если .teaser-title - ваш контейнерный элемент.

попробуйте

var container = $(".teaser-title").html();
var regex = /<br\s*[\/]?>/gi;
$(".teaser-title").html(container.replace(regex, " "));
0 голосов
/ 13 января 2012

Вы хотите заменить содержимое как текст, а не как теги:

$('.teaser-title').html($('.teaser-title').html().replace(/<br />/g,' '))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...