0

私はこの機能を機能させることに近づいていますが、まだ十分ではありません。

基本的なロジックは、"+" を含む p 要素を見つけ、テキストから "+" を取り除き、既存のコンテンツを新しいコンテンツに置き換えて、クラスを追加するというものです。

最初は、一致したすべての要素が返され、1 つの段落に連結されていました。だから私は 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 の使用を回避できます。

于 2013-09-24T11:21:15.563 に答える