jquery
  • string
  • text
  • wrap
  • 2013-04-18 12 views 28 likes 
    28

    要素内に文字列を見つけて、いくつかのスパンタグをラップします。例:要素内に文字列を見つけ、それを囲むいくつかのspanタグをラップします

    $("h2:contains('cow')").each(function() { 
    $(this).text().wrap("<span class='smallcaps'></span>"); 
    }); 
    

    しかし、唯一のH2タグを含む全体をラップのことを:私が試した<h2>We have <span class='smallcaps'>cows</span> on our farm</h2>

    から<h2>We have cows on our farm</h2>から

    答えて

    60
    $("h2:contains('cow')").html(function(_, html) { 
        return html.replace(/(cow)/g, '<span class="smallcaps">$1</span>'); 
    }); 
    

    http://jsfiddle.net/w5ze6/1/のためにとにかく含まれるであろう

    +2

    私は興味があるので質問しています - 使用している構文に関するドキュメントはどこにありますか?具体的に 'function(_、html)'です。 –

    +1

    @エヴァン私は、jQueryのドキュメント、http://api.jquery.com/html/、jQuery 1.4の「html」メソッドは関数を受け入れ、最初のパラメータはインデックスで、2番目はhtmlコンテンツ。 – undefined

    +0

    はい、私はそれを見ました - しかし、あなたは単にそのようなインデックスとして '_'を供給することができますか?それは基本的にヌルインデックスを送信するだけですか? –

    8

    もう1つの方法は、キーワードで分割し、更新されたhtmlで結合します。

    $("h2:contains('cow')").html(function(_, html) { 
        return html.split('cow').join("<span class='smallcaps'>cow</span>"); 
    }); 
    

    注:私はこれをテストしていませんが、私は、これは交換することよりも悪い行いますと仮定していますが、この図は、私は有益な目的

    +0

    これは素晴らしい感謝の友人を働かせます:) –

    +0

    最初にキーワードの周りにhtmlタグがあると、上記の1つは失敗していました。これは完全に機能します。別の選択肢があるのはニース。 –

    +0

    私はそれが数年後になっていることを知っていますが、私はこの答えのために実用的なフィドルを作成しました.... http://jsfiddle.net/v2nqu05o/ – Studocwho

    0
    $("h2:contains('cow')").each(function() { 
        var newText = $(this).html().replace("cow", "<span class='smallcaps'></span>"); 
        $(this).html(newText); 
    }); 
    
    +0

    あなたは要素のHTMLを設定するように変更する必要がありますテキスト –

    +0

    @JustinBicknell良い点が更新されました。 –

    0

    私の場合、ターゲットdiv内にいくつかのタグがあり、テキストをリンクにラップする必要があります。

    「これは何をやったの?

    var oldText = $(this).text(), 
    newText = $(this).html().replace(
        oldText, 
        "<a class='k-link' href='#' class='smallcaps'>" + 
         oldText + 
        "<span class='k-icon k-i-arrow-n'></span></a>" 
    ); 
    $(this).html(newText); 
    
    関連する問題