2

我需要从具有段落和跨度和其他内容的 div 中提取文本并将其放入 textarea 中。我只需要加载文本,而不是 HTML。

为此,我可以使用:

loadtext = $('#mydiv').text();

但是,我确实需要保留换行符。

为此,我正在做:

loadtext = $('#mydiv').text().replace(/<br>/gm, '\r\n');

但它似乎不起作用,因为当我将该文本加载到文本区域时,它都是平坦的,没有换行符。难道我做错了什么?

4

2 回答 2

5

$('#mydiv').text()已经被剥离了所有的 HTML,包括<br>元素,所以这不起作用。您需要修改#mydiv元素的 HTML 并替换所有<br/>元素,然后检索文本。

$('#mydiv').find('br').each(function(){
    $(this).after("\n")
           .remove();
});
var loadtext = $("#mydiv").text();
于 2013-03-25T16:29:19.140 回答
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)。

于 2013-03-25T16:40:22.560 回答