3

私はこのhtmlを持っています

<div>This text is <strong>really</strong> awesome!</div>

<span>テキストのクリックされた部分を折り返したい。したがって、[このテキストは一部です] をクリックすると、取得する必要があります

<div><span>This text is </span><strong>really</strong> awesome!</div>

そして、のアトミック部分と同じdiv

イベントを作ろうとしているのです$('div').click();が、クリックされた部分だけを何かで囲んでいないと検出する方法がわかりません(<strong>really</strong>その前後の部分では問題ありませんが、部分では問題ありません)。

4

1 に答える 1

3

メソッドを参照することをお勧めします.contents()。これにより、ラップされたノードだけでなくテキスト ノードも提供されるため、ラップすることができます。jQuery ドキュメントの例を調整するには:

$(".container")
    .contents()
    .filter(function() {
        // get only the text nodes
        return this.nodeType === 3;
    })
    .wrap( "<span></span>" );

クリック後にコンテンツをラップしたいようですが、これはかなり難しいと思います。可能であれば、ユーザーがクリックするにコンテンツをラップしてから、クリックしたものにスタイルを適用することをおspan勧めします。これははるかに簡単です。上記のコードを使用してラップすると、次のようなハンドラーを適用できます

$(".container").on('click', 'span', function() {
    $(this).addClass('clicked');
});
于 2013-09-10T19:29:54.803 に答える