0

我有以下html

<p><img src="" /> some text</p>

如何仅用标签包装文本。<span>

最终结果应该是

<p><img src="" /><span>some text</span></p>
4

5 回答 5

1

根据您是否使用框架,有多种方法可以做到这一点。这基本上是你如何使用 vanilla js,普通的旧 js 来做到这一点。

var ps = document.getElementsByTagName('p');
var text = ps[0].innerText;

ps[0].innerHTML = ps[0].innerHTML.replace(text, '<span>' + text + '</span>');
于 2013-07-23T03:43:01.483 回答
1

我发现使用文本功能也很有用

$(function(){
    $('p').text(function(i, oldText){
        return oldText;
    }).wrap("<span>");
});

演示

于 2013-07-23T03:44:22.727 回答
0

如果选择器匹配一个独特的图像,这将做到这一点:

$("selector").html($("<span/>", { text: $("selector").text() });

如果它匹配多个元素,则需要.each()分别处理每个元素;正文将上面的$("selector")替换为$(this)

于 2013-07-23T03:40:26.137 回答
0

你可以试试

$('p').contents().filter(function(){
    return this.nodeType == 3
}).wrap('<span/>')

演示:小提琴

于 2013-07-23T03:41:30.887 回答
0
var text = $('p').text();
var img = $('p img').attr('src');
$('p').html('').append('<img src="'+img+'" /><span>'+text+'</span>');
于 2013-07-23T04:11:43.453 回答