我需要从带有段落和跨度等的div中提取文本并将其放入textarea中。我只需要加载文本,而不是HTML。
为此,我可以使用:
loadtext = $('#mydiv').text();
但是,我需要保留换行符。
为此,我正在做:
loadtext = $('#mydiv').text().replace(/<br>/gm, '\r\n');
但它似乎不起作用,因为当我将该文本加载到textarea时,它都是平坦的,没有换行符。我做错了吗?
答案 0 :(得分:5)
$('#mydiv').text()
已被删除所有HTML,包括<br>
元素,因此这不起作用。您需要修改#mydiv
元素的HTML并替换所有<br/>
元素,然后检索文本。
$('#mydiv').find('br').each(function(){
$(this).after("\n")
.remove();
});
var loadtext = $("#mydiv").text();
答案 1 :(得分:1)
另一种解决方案是使用从未添加到文档中的中间元素。
var html = $('#mydiv').html(); // e.g. '<p>line 1</p><br><br><p>line 2</p>'
var text = $('<div>').html(html.replace(/<br\/?>/g, '\n')).text();
/* text =
"line 1
line 2"
*/
$('#mytextarea').text(text);
这支持<br>
(HTML)和<br/>
(XHTML)。