Jquery Clone()和替换文本

3

我有一个很大的表格需要在同一页中创建多次,但我不确定该怎么做。我认为最简单的方法是将表格作为页面上隐藏的局部视图,并且每次需要时我将从我的jQuery代码中克隆它。我知道如何克隆它,但我不确定如何将文本插入到特定的span中,在插入之前。

这是我的表格的一个小例子。有人能帮我解决这个问题吗?

 < div id="ToClone">
            <table >
                <tr>
                    <td>
                        <table>
                            <tr><td><b>MMS_RepairLabel:</b></td><td align="right"><span id="RepairId"></span></td></tr>
                            <tr><td><b>MMS_MWTLabel:</b></td><td align="right"><span id="MWT"></span></td></tr>
                            <tr><td><b>MMS_MDTLabel:</b></td><td align="right"><span id="MDT"></span></td></tr>
                        </table>
                    </td>
                </tr>
            </table>
        </div>
        <script>
            var History = (function () {
                $(function () {
                    var tblClone = $("#ToClone").clone();
                });
            }());
        </script>

需要在表格中更改哪些数据?我猜测是加粗的标签吗? - Botonomous
1
你在要克隆的 HTML 中有“ID”,这是大忌。页面上不能出现重复的 ID,因为那是无效的 HTML。 - iCollect.it Ltd
2个回答

4
你需要先解决重复id的问题,我建议将它们改为类名。
我推荐使用一个虚拟脚本块来处理你的模板。这对于维护非常有用,浏览器也会忽略未知类型,因此你可以插入任何元素:
<script id="ToClone" type="text/template">
    <table>
        <tr>
            <td>
                <table>
                    <tr>
                        <td><b>MMS_RepairLabel:</b>
                        </td>
                        <td align="right"><span class="RepairId"></span>
                        </td>
                    </tr>
                    <tr>
                        <td><b>MMS_MWTLabel:</b>
                        </td>
                        <td align="right"><span class="MWT"></span>
                        </td>
                    </tr>
                    <tr>
                        <td><b>MMS_MDTLabel:</b>
                        </td>
                        <td align="right"><span class="MDT"></span>
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
</script>

然后按照以下方式使用您插入的值进行克隆:
    var $clone = $($('#ToClone').html());
    $('.RepairId', $clone).text(repairIdValue);
    $('.MDT', $clone).text(mdtValue);
    $('.MWT', $clone).text(mwtValue);
    // Do something with the clone

JSFiddle: http://jsfiddle.net/TrueBlueAussie/381ugdvr/1/

可以用于演示和共享HTML、CSS和JavaScript代码的在线编辑器。


1
如果我能明白你在寻找什么,可以看看这个解决方案:
jQuery:
$('.pasteTable').each(function(){

    var RepairId = $(this).data('repair-id');
    var MWT = $(this).data('mwt');
    var MDT = $(this).data('mdt');

    $(this).html('<table><tr><td><b>MMS_RepairLabel:</b></td><td align="right"><span class="RepairId">' + RepairId + '</span></td></tr><tr><td><b>MMS_MWTLabel:</b></td><td align="right"><span class="MWT">' + MWT + '</span></td></tr><tr><td><b>MMS_MDTLabel:</b></td><td align="right"><span class="MDT">' + MDT + '</span></td></tr></table>');
});

在您的代码中任何需要克隆表格的地方,只需插入带有“data”属性的 :
HTML:
<div class="pasteTable" data-repair-id="#1" data-mwt="baby" data-mdt="ball"></div>

Demo: http://jsfiddle.net/zf09m0at/3/


这会生成具有重复ID的元素(例如在span上)。 - iCollect.it Ltd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接