1

我有一个像这样的简单代码:

$('#tblPrice').replaceWith( $('#tblPrice').html()
   .replace(/<tbody/gi, "<div id='table'")
   .replace(/<tr/gi, "<div")
   .replace(/<\/tr>/gi, "</div>")
   .replace(/<td/gi, "<span")
   .replace(/<\/td>/gi, "</span>")
   .replace(/<\/tbody/gi, "<\/div")
   );

我有多个表,其 id 为tblPrice. 它一次只替换一张桌子,所以如何使它成为.each function ()

4

5 回答 5

1

我有多个表,其 id 为tblPrice.

这是你的问题。ID 必须是唯一的。JavaScript 将停止查找它找到的第一个匹配 ID。修改您的#tblPrice表,使其具有不同的 ID,但给每个表一个相似的类,然后使用类选择器而不是 ID 选择器。

例如:

<table class="tblPrice" id="tblPrice1">
    ...
</table>
<table class="tblPrice" id="tblPrice2">
    ...
</table>

要将其转换为.each()循环,您可以简单地:

$('.tblPrice').each(function() {
    var $this = $(this);
    $this.replaceWith($this.html() ... );
});

id="table"出于与上述相同的原因,您还需要在 HTML 替换中更改它。改用一个类:

.replace(/<tbody/gi, "<div class='table'")
于 2013-10-22T11:44:33.420 回答
0

您可以更改表格的样式,而不是替换为 jquery,它的子元素的行为类似于 div 和 span。

例如,

table, tr, tbody{
    display: block;  /* div */
    /* other css styles */
}

td{
    display: inline; /* span */
    /* other css styles */
}

这当然不会完全改变表格元素,但它可能会帮助您实现您实际想要实现的目标。

于 2013-10-22T11:52:54.230 回答
0

只需在所有表中获取一个类属性并输入以下代码:-

$('.tblPrice').each(function() {
    var $this = $(this);
    $this.replaceWith($this.html() ... );
});
于 2013-10-22T11:45:17.210 回答
0

ID在 DOM 中应该是唯一的。即使您使用.each此处的方法,您也将始终仅在每次使用 ID 时获取第一个元素。

我会建议改用类并将它们添加到所有表中,myTable并修改您的代码,例如:

$('.myTable').replaceWith(function () {
    return $(this).html()
        .replace(/<tbody/gi, "<div id='table'")
        .replace(/<tr/gi, "<div")
        .replace(/<\/tr>/gi, "</div>")
        .replace(/<td/gi, "<span")
        .replace(/<\/td>/gi, "</span>")
        .replace(/<\/tbody/gi, "<\/div");
});
于 2013-10-22T11:45:56.627 回答
0

正如评论所说..

$(".tblPrice").each(function() { 
$(this).replaceWith( $(this).html()
.replace(/<tbody/gi, "<div id='table'")
.replace(/<tr/gi, "<div")
.replace(/<\/tr>/gi, "</div>")
.replace(/<td/gi, "<span")
.replace(/<\/td>/gi, "</span>")
.replace(/<\/tbody/gi, "<\/div")
);
});
于 2013-10-22T11:46:17.343 回答