所以如果我调用这个函数:
$("#item").text()
关于此HTML代码:
<div id="item">
<pre><span class="cm-tag"><html></span></pre><pre><span class="cm-tab"> </span>asdf</pre><pre><span class="cm-tag"></html></span></pre>
</div>
它返回:
'<html> asdf</html>'
我希望它返回:
'<html>
asdf
</html>'
基本上我需要在每个<pre>
标签后面换一个新行...我该怎么做?
答案 0 :(得分:1)
一种可能的解决方案,获取每个pre的文本并使用新行加入它们:
var text = $("#item pre").map(function(){
return $(this).text();
}).get().join('\n');
这是jsfiddle:http://jsfiddle.net/uGGFe/
答案 1 :(得分: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
答案 2 :(得分: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');
});
的 Working sample 强>
答案 3 :(得分:0)
因为jQuery搜索匹配htmlElement使用正则表达式,当正则表达式匹配内容时首先删除“\ r \ n”,所以你看到内容没有“\ r \ n”