jQuery:在textarea中附加到段落的html的最佳方式

时间:2014-08-26 13:11:11

标签: javascript jquery html replace paragraph

我有一个包含可变html内容的textarea,它始终包含在段落(p)标记中。

HTML(在追加之前):

<textarea rows='7' class='form-control' id='comments'><p>My variable HTML content.</p></textarea>

我在jQuery中使用以下内容获取此内容:

jQuery:

$('#comments').val();

现在我需要在本段末尾添加HTML,但在p标签内。

HTML(追加后):

<textarea rows='7' class='form-control' id='comments'><p>My variable HTML content. Some appended HTML.</p></textarea>

我当然可以替换上面的最后4个字符(这是关闭的p标签),然后附加我的HTML,然后再次添加结束p标签。 有人能告诉我是否有更好的方法在jQuery中实现相同的目标?

提前非常感谢蒂姆。

4 个答案:

答案 0 :(得分:4)

将textarea的字符串值解析为HTML,并插入您喜欢的任何内容,然后传回HTML的字符串值

$('#comments').val(function(_, val) {
    return $('<div />', {html:val}).find('p').append('content').end().html();
});

FIDDLE

答案 1 :(得分:2)

这可以解决问题

var html = $('#comments').val();
$('#comments').val(
    $(html).append('  Some appended HTML.')[0].outerHTML
);

DEMO

答案 2 :(得分:0)

确定。我真的很喜欢这个!

$('#comments').text($($('#comments').text()).append(' a new insert!').text());

不要看太长时间。可能会伤到你的眼睛: - )

答案 3 :(得分:0)

您可以将值插入临时div,将元素添加到临时div中的<p> - 元素并再次获取更新的内容:

var tmpDiv = $('<div></div>'); //create temporary element
tmpDiv.html($('#comments').val()); // add HTML from textarea
$(someHtml).appendTo($('p', tmpDiv)); // append custom HTML to P inside temp element
newTextAreaValue = tmpDiv.html(); // retrieve new value