15

スパンで div 内のテキストをラップする必要があります。

<div class="item">
   <span class="count"></span>
   Text that needs to be wrapped.
</div>

<div class="item">
   <span class="count"></span>
   Text that needs to be wrapped.
</div>

<div class="item">
   <span class="count"></span>
   Text that needs to be wrapped.
</div>

これを試してみましたが、実際にはうまくいきませんでした...

$('.item').text().wrap('<span class="new" />'); 
4

6 に答える 6

25

contents().eq( )を使用してそれを行うことができます

$('.item').each(function(i, v) {
    $(v).contents().eq(2).wrap('<span class="new"/>')
});​

http://jsfiddle.net/qUUbW/

于 2012-11-30T20:08:18.723 に答える
12

どうですか

$('.item').contents().filter(function(){
    return this.nodeType == 3 && $.trim(this.nodeValue).length;
}).wrap('<span class="new" />');

http://jsfiddle.net/mowglisanu/x5eFp/3/

于 2012-11-30T20:06:48.147 に答える
4

単一 DIV :

var txt = $('.count')[0].nextSibling;
$(txt).wrap('<span class="new" />');

JSフィドル

複数の DIV :

var markers = document.querySelectorAll('.count'),
    l = markers.length,
    i, txt;

for (i = l - 1; i >= 0; i--) {
    txt = markers[i].nextSibling;
    $(txt).wrap('<span class="new" />');
}

JSFiddle

于 2012-11-30T19:59:38.633 に答える
2

これに対する私の見解:

$('.item').contents().each(function() {
    if (this.nodeType == 3 && $.trim(this.nodeValue) != '') {
       $(this).wrap('<span class="textwrapped"></span>');
    }
});

HTMLコードをインデントするために使用されるタブは、フィルターで除外する必要があるテキストノードでもあるため、この$.trim部分が必要です(たとえば、直前のタブとして<span class="count">

実際のデモを見る

于 2012-11-30T20:19:08.927 に答える
1

要素内でテキスト コンテンツをラップする必要がある場合は、wrapInner

https://api.jquery.com/wrapInner/

html の例

<div class="item">contents inside needs to be wrapped</div>`
// jQuery
$('.item').wrapInner('<span></span>')
于 2020-08-15T04:46:18.117 に答える
1
$('.item').html($('<span class="new">').text($(".item").text()))
于 2012-11-30T19:55:36.153 に答える