2

したがって、この関数を呼び出すと、次のようになります。

$("#item").text()

このHTMLコードについて:

<div id="item">
<pre><span class="cm-tag">&lt;html&gt;</span></pre><pre><span class="cm-tab">    </span>asdf</pre><pre><span class="cm-tag">&lt;/html&gt;</span></pre>
</div>

それは戻ります:

'<html>    asdf</html>'

そして私はそれを返したい:

'<html>
    asdf
</html>'

基本的に、各タグの後に新しい行が必要<pre>です...これを行うにはどうすればよいですか?

4

4 に答える 4

1

考えられる解決策は、各preのテキストを取得し、それらを新しい行で結合することです。

var text = $("#item pre").map(function(){
    return $(this).text();
}).get().join('\n');

これがjsfiddleです:http://jsfiddle.net/uGGFe/

于 2012-06-26T04:26:50.770 に答える
0

あなたのための別のオプション:

var clone = $("#item").clone(); //create a clone we can manipulate
clone.find('pre').after('\n');  //stick new lines in after <pre> tags
alert(clone.text());            //behold the alert glory

http://jsfiddle.net/SrV9c/1/

于 2012-06-26T04:48:17.913 に答える
0
var text = '';
$("#item pre").map(function(i, el) {
    return $(el).text().replace(/\s/g, '')
}).each(function(i, val) {
    if (i == 0) 
        text += val.concat('\n\t');
    else
        text += val.concat('\n');
});

作業 サンプル

于 2012-06-26T05:26:06.943 に答える
0

jQuery search match htmlElementは正規表現を使用するため、正規表現がコンテンツに一致するときに最初に「\ r \ n」を削除すると、コンテンツに「\ r\n」がないことがわかります。

于 2012-06-26T06:45:55.827 に答える