0

我正在使用旧版本的 rails (1.2.6) 和没有 javascript 模板系统的项目工作。我想在服务器上(例如在 rhtml 视图中)和客户端上(例如当用户动态地向表中添加一行时)呈现相同的 HTML。

因此,例如,我有一个渲染一行输入字段的部分:

<tr><td><input /></td></tr>

这在服务器上效果很好。我的计划是把它渲染成display: nonediv 中,以便 jQuery 在用户想要添加一行时查找和克隆。

不幸的是,当我只渲染一个<tr>在 div 中只渲染一个节点时,可以预见的是,DOM 不包含这些元素。由于这种行为,这种 jQuery 克隆方法无法工作。

我可以做些什么来共享在<tr>服务器和客户端之间生成的代码?

4

1 回答 1

1

您可能遇到的问题是,这<div>不是 a 的允许父母<tr>

允许的父元素

表, 头, tfoot, tbody

因此浏览器会将您损坏的<div><tr>...</tr></div>HTML 更正为您无法使用的内容。使用style="display: none"只是<div>对用户隐藏你,它不会<div>对浏览器隐藏。

将 HTML 片段偷偷溜过浏览器的常用方法是使用<script>带有非 HTMLtype的 a 作为容器。你想要这样的东西进入浏览器:

<script id="pancakes" type="text/x-template">
    <tr><td><input /></td></tr>
</script>

然后你可以$('#pancakes').html()在你的 jQuery 中使用纯文本。


您可能想与某人谈谈升级到更新版本的 Rails,他们知道在如此古老且不受支持的 Rails 版本中存在哪些类型的漏洞和错误。随着时间的推移,升级只会越来越难。

于 2013-05-30T17:42:46.237 回答