0

我接近让这个功能正常工作,但还没有完全实现。

基本逻辑是找到任何包含“+”的 p 元素,从文本中去除“+”并尝试用新内容替换现有内容并添加一个类。

最初,我将所有匹配的元素都返回并连接到一个段落中。所以我尝试创建一个 each 函数。我现在在控制台中看到了正确的结果,但我不确定如何仅替换匹配段落的内容(使用 $(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 不完全但不知道如何解决这个问题,已经尝试了几种变体。

希望有人可以帮助我。

4

1 回答 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>');
});

演示

这避免使用:contains()which will match even character '+' is inside content text,而不仅仅是在开头。

于 2013-09-24T11:21:15.563 回答