1
function toText()
{
    var convertHTML =$('#mainContent').html();
    var ele = $(convertHTML + " > span").each(function(){
        $(this).replaceWith($(this).text());
    });
    console.log(ele);


}

我的目标是替换以下内容

    <div id="mainContent">
    test
<br>
    1234
<br>
    <span class="underline">test</span>
<br>
    <span class="underline">1234</span>
    </div>

并希望我的功能输出测试<br> 1234 <br> test <br> 1234

这就是为什么我不能只使用 text() 因为它也带走了<br>

4

3 回答 3

3

试试这样:

function toText()
{
    var ele = $("#mainContent > span").each(function(){
        $(this).replaceWith($(this).text());
    });
    console.log(ele);
}   

您在哪里使用整个 html 块作为 jQuery 选择器:)

于 2012-08-24T08:40:27.097 回答
1

convertHTMLfrom var convertHTML =$('#mainContent').html();不是 jQuery 对象

你将不得不写

var ele = $("#mainContent > span").each(function(){
        $(this).replaceWith($(this).text());
    });

原因 :

$('#mainContent').html();将返回给您工作的string不是 jQuery 对象$.each

var ele = $(convertHTML + " > span")意味着

var ele = $("test<br>1234<br><span class="underline">test</span><br><span class="underline">1234</span>" + " > span")

于 2012-08-24T08:40:37.727 回答
1

您正在获取从返回的 html 字符串$("#mainContent").html()并尝试将其用作下一行的选择器的一部分,而您真正需要的选择器是"#mainContent > span".

试试这个:

function toText()
{
    $("#mainContent > span").replaceWith(function(){ return $(this).text(); });
}

您不需要.each()循环:如果您将函数传递给.replaceWith()该函数,则会为 jQuery 对象中的每个元素调用一次,并且您的返回值用作当前元素的替换。

演示:http: //jsfiddle.net/7xKzP/

于 2012-08-24T08:45:33.443 回答