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


} 

我的目标是替换以下内容替换HTML使用jQuery

<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

这就是为什么我不能只使用文本(),因为它需要还有<br>

回答

1

你服用返回的HTML字符串从$("#mainContent").html(),并试图在真正需要的选择是"#mainContent > span"使用它作为下一行选择的一部分。

试试这个:

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

你并不需要一个.each()循环:如果你通过一个函数来.replaceWith()该功能为您的jQuery对象中的每个元素调用一次,你的回报值用作替换当前元素。

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

+0

完美答案+1 – LmC

3

试试这样说:

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

你在哪里使用HTML的整个块作为一个jQuery选择:)

1

convertHTMLvar convertHTML =$('#mainContent').html();不是一个jQuery对象

你将不得不写

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

原因:

$('#mainContent').html();将返回您不是一个jQuery对象$.each工作。

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

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