Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Разделить содержимое с помощью jquery и тега ‹hr› и поместить его в другой div

Автор вопроса: arekkОтветов: 4

Я получил некоторый текст, введенный с помощью tinyMCE в классе div '.category-info'. Текст можно разделить с помощью тега hr. Что я хочу сделать, так это разделить текст с помощью jQuery и обернуть вторую часть текста (после тега hr) в отдельный div. Мой код выглядит так:

var str = $('.category-info').html();
var splitter = $(str.split('<hr>')[1]).html();
$(splitter).wrap('<div class="news-part" />');

Когда я предупреждаю разделитель переменных, он показывает содержимое html (но то, что устарело без тега p, который находится сразу после тега hr), но он не заключен в div.

jquerysplit

Ответы

Ответ 1 · рейтинг 4 · Selvakumar Arumugam

Чтобы обернуть всю часть после часа, я бы сделал что-то вроде ниже,

var str = $('.category-info').html();
str = str.split('<hr>');

$('.category-info').html(str[0] +
          '<div class="news-part">' +
             str[1] +
          '</div>');

ДЕМО

Если я правильно понял, вы хотите обернуть элемент после hr с помощью <div class="news-part" />. Затем попробуйте код ниже,

$('.category-info hr').next().wrap('<div class="news-part" />');

ДЕМО

Ответ 2 · рейтинг 2 · Neil Kinnish

Это сделает то, что вы хотите...

var str = $('.category-info').html();
var splitter = str.split('<hr>')[1];
$(splitter).wrap('<div class="news-part" />');

Ответ 3 · рейтинг 1 · bjorsq

У меня была аналогичная проблема, решение которой я нашел после прочтения этого поста. Это разделит содержимое в элементе и обернет все после элемента (до следующего) с помощью div:

$('.category-info hr').each(function(){
    $(this).nextUntil('hr').wrapAll('<div class="news-part"/>');
});

Это будет работать только в вашем случае, когда у вас есть элемент <hr> перед каждым элементом (включая один в начале).

Ответ 4 · Charlie G

Когда вы используете $.wrap(), вы должны прикрепить его к селектору элемента, который вы хотите обернуть.

Насколько я понимаю вашу проблему, попробуйте следующее:

$('.category-info hr:nth-child(2)').wrap('<div class="news-part" />');

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы