【发布时间】:2018-07-29 22:03:22
【问题描述】:
我有一个 if else 语句。在<p> 标记中的文本和可编辑<textarea> 中的相同文本之间切换
问题是:
您按下编辑按钮,脚本会将 p 标签转换为 textarea。带有换行符的文本可以很好地转换。
您按保存。文本再次正确转换回 p 标签。
-
您尝试再次按编辑...但这一次,换行符被忽略了!?
var curState = "Ret"; if (curState == "Gem"){ curState = "Ret"; var p = btn.closest("div").find("textarea"); var t = jQuery(this).closest("div").children("div").children('textarea').data(); var ta = jQuery("<p/>", { "data": t }); p.replaceWith(ta); }else{ curState = "Gem"; var p = jQuery(this).closest("div").find("p"); var t = p.data() var ta = jQuery("<textarea/>", { "class": "editTextarea", "data": t }); p.replaceWith(ta); }
【问题讨论】:
-
不要在 textarea 上使用 html 方法......用 val() 设置它的值。除此之外,您似乎正在替换所有换行符,因此预计第二次会有所不同。请提供 可运行 minimal reproducible example。在问题编辑器中单击
<>以创建将在此页面中运行的sn-p -
提示:尝试将包含
\n的原始文本存储在<p>的data()中,而不是依赖它的textContent -
@charlietfl 对不起。现在编辑了。正如您在更新的问题中看到的那样,我尝试使用 .data() 。但没有任何区别
-
请使此代码可运行,以便我们自己查看问题。只需要足够的基本 html 并通过在问题编辑器中单击
<>在 stack sn-p 中包含 jQuery 库 -
data()的使用也不正确。 set 需要一个键和值,get 需要相同的键。 api.jquery.com/data