我有一个使用 JQuery UI 的选项卡小部件的页面。其中 2 个选项卡共享同一段 HTML,只不过是一个简单的 HTML 表格:
<table border="0" cellpadding="0" cellspacing="0" class="showTable" id="table-person-info">
<tr>
<td class="pictureColumn">
<img alt="Person Photo" src="images/avatar.jpg" id="CurrPersonPhoto" />
</td>
<td>
<div id="CurrPersonFullName" class="fullName"></div>
<b class="popupInfo">Person ID: </b><div id="CurrPersonID" class="popupInfo"></div><br />
<b class="popupInfo">Hire Date: </b><div id="CurrHireDate" class="popupInfo"></div><br />
<b class="popupInfo">Tenure: </b><div id="CurrTenure" class="popupInfo"></div><br />
<b class="popupInfo">Location: </b><div id="CurrLocation" class="popupInfo"></div>
</td>
<td style="width:179px;">
<img src="edit.png" alt="Edit" />
<img src="log_activity.png" alt="Log activity" />
</td>
</tr>
</table>
该表在 ajax 调用后得到更新,为了避免重复相同的代码两次,我尝试使用 JQuery clone() 函数将其注入到需要显示它的选项卡上的 2 个位置。我用这个电话:
$("#table-person-info").clone(false).find("*").removeAttr("id").appendTo($("#person-Info-View"));
将 clone 方法的参数从 true 更改为 false 似乎没有任何区别。我发现这段代码完全将 html 代码破坏为如下所示:
<table border="0" cellpadding="0" cellspacing="0" class="showTable"> </table>
<tr>
<td class="pictureColumn">
</td>
<td>
</td>
<td style="width:179px;">
<img src="edit.png" alt="Edit" />
<img src="log_activity.png" alt="Log activity" />
</td>
</tr>
<img alt="Person Photo" src="images/avatar.jpg" />
<div id="CurrPersonFullName" class="fullName"></div>
<b class="popupInfo">Person ID: </b><div class="popupInfo"></div><br />
<b class="popupInfo">Hire Date: </b><div class="popupInfo"></div><br />
<b class="popupInfo">Tenure: </b><div class="popupInfo"></div><br />
<b class="popupInfo">Location: </b><div class="popupInfo"></div>
对 JQuery 文档的快速回顾表明,这实际上是预期的,我引用:
使用 .clone() 克隆未附加到 DOM 的元素集合时,不能保证它们插入 DOM 时的顺序
既然如此,那我还有什么选择呢?我是否愿意复制表格并在每次选择选项卡时手动更新值?我的意思是,只有两次,我想这并不难,但我想知道是否有更优雅的选择,或者我是否没有采用正确的方法来使用 JQuery 重用 html 代码。
很抱歉发了这么长的帖子,并在此之前感谢您提出任何建议!