Я близок к тому, что эта функция работает, но пока не совсем.
Основная логика говорит, что найти любой элемент 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 не совсем, но не уверен, как это исправить, попробовали несколько вариантов.
Надеюсь, кто-то может мне помочь.
Вы можете использовать следующий фрагмент:
// 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>');
});
Это позволяет избежать использования :contains()
которое будет соответствовать даже символу "+", находится внутри текста контента не только в начале.