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

から返されたhtml文字列を取得し、$("#mainContent").html()それを次の行のセレクターの一部として使用しようとしていましたが、実際に必要なセレクターはです"#mainContent > span"

代わりにこれを試してください:

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

.each()ループは必要ありません。関数を渡すと、.replaceWith()その関数はjQueryオブジェクトの要素ごとに1回呼び出され、戻り値が現在の要素の代わりに使用されます。

デモ: http: //jsfiddle.net/7xKzP/

于 2012-08-24T08:45:33.443 に答える
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 に答える