
在 jQuery 中,
要让 html() 返回带值的
// ✅ 正确做法:同步 value 到 innerHTML,再获取 html()
function getHtmlWithTextareaValues() {
// 临时将所有 textarea 的 value 写入其 innerHTML
$('textarea').html(function() {
return $(this).val();
});
// 此时 html() 将包含用户输入
return $('#test').html();
}
// 使用示例
$('#saveBtn').on('click', function() {
const serialized = getHtmlWithTextareaValues();
console.log(serialized); // 输出: "Mango "
});⚠️ 重要注意事项:
- 此操作是临时覆盖
的 innerHTML,不影响后续交互(.val() 仍独立工作); - 若页面含多个
,上述方法会统一处理,无需逐个选择; - 避免在 DOM 渲染关键路径中频繁调用(如输入事件中),建议仅在导出/序列化时触发;
- 原生替代方案(不依赖 jQuery):element.innerHTML = element.value,但需遍历 NodeList。
✅ 总结:html() 本身不感知表单控件状态,必须主动同步。通过 $('textarea').html(fn) 回调注入 .val(),即可生成符合预期的、含用户数据的 HTML 字符串,适用于模板导出、富文本快照等场景。
立即学习“前端免费学习笔记(深入)”;










