Вырезать первый символ из элемента абзаца, заменить содержимое и добавить класс. JQuery

0

Я близок к тому, что эта функция работает, но пока не совсем.

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

Первоначально у меня были все согласованные элементы, возвращаемые и объединенные в один абзац. Поэтому я попытался создать каждую функцию. Теперь я вижу правильные результаты в консоли, но я не уверен, как заменить контент только для согласованного абзаца (используя $ (this)).

Я сделал скрипку здесь: http://jsfiddle.net/lharby/x4NRv/

Код ниже:

// remove bespoke text and add class 
$qmarkText = $('.post p:contains("+")').each(function() {
    $qStr = $(this).text().slice(1);
    $qmarkText.replaceWith('<p class="subhead-tumblr"' + $qStr + '</p>');
    console.log($qStr); 
});

Я знаю, что $ qmarkText не совсем, но не уверен, как это исправить, попробовали несколько вариантов.

Надеюсь, кто-то может мне помочь.

Теги:
replacewith

1 ответ

4

Вы можете использовать следующий фрагмент:

// remove bespoke text and add class 
$qmarkText = $('p').filter(function () {
    return $(this).text().substring(0, 1) === "+"
}).each(function () {
    $qStr = $(this).text().slice(1);
    $(this).replaceWith('<p class="subhead-tumblr">' + $qStr + '</p>');
});

DEMO

Это позволяет избежать использования :contains() которое будет соответствовать даже символу "+", находится внутри текста контента не только в начале.

  • 0
    Круто, большое спасибо. Я знал, что p: содержит () не самый надежный метод.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню