我正在使用旧版本的rails(1.2.6)和没有javascript模板系统的项目。我想在服务器上(例如在rhtml视图中)和客户端上呈现相同的HTML(例如,当用户动态地向表中添加行时)。
因此,例如,我有一部分呈现一行输入字段:
<tr><td><input /></td></tr>
这在服务器上运行良好。我的计划是在display: none
div中呈现它以便jQuery在用户想要添加行时查找和克隆。
不幸的是,当我在div中只渲染一个<tr>
节点时,可以预见,DOM不包含这些元素。由于这种行为,这种jQuery克隆方法无法工作。
如何在服务器和客户端之间共享生成<tr>
的代码?
答案 0 :(得分:1)
您可能遇到的问题是<div>
不是permitted parent for a <tr>
:
允许的父元素
table,thead,tfoot,tbody
因此,浏览器会将损坏的<div><tr>...</tr></div>
HTML更正为您无法使用的内容。使用style="display: none"
仅隐藏用户的<div>
,它不会隐藏浏览器中的<div>
。
通过浏览器隐藏HTML片段的常用方法是使用带有非HTML type
的{{3}}作为容器。你想要这样的东西进入浏览器:
<script id="pancakes" type="text/x-template">
<tr><td><input /></td></tr>
</script>
然后,您可以在jQuery中使用$('#pancakes').html()
作为纯文本。
您可能想要与某人谈论升级到更新版本的Rails,他们知道在这样一个古老且不受支持的Rails版本中有哪些漏洞和漏洞。随着时间的推移,升级只会越来越难。