将表格转换为列表分组 3 行
在 SharePoint 中,它有一个令人讨厌的习惯,那就是到处使用嵌套表。我想在其中之一上使用 jQuery 轮播,但它不适用于表格。所以我需要将表格转换为列表。这不是问题,因为我发现一些 jQuery 可以为我做到这一点。即:
var list = $("<ul/>");
$('#tab1').find("tr").each(function() {
var p = $(this).children().map(function() {
return "<p>" + $(this).html() + "</p>";
});
list.append("<li>" + $.makeArray(p).join("") + "</li>");
});
$('#tab1').replaceWith(list);
表结构如下:
<table id="test1">
<tr><td>Help 1</td></tr>
<tr><td>Me 1</td></tr>
<tr><td>Please 1</td></tr>
<tr><td>Help 2</td></tr>
<tr><td>Me 2</td></tr>
<tr><td>Please 2</td></tr>
<tr><td>Help 3</td></tr>
<tr><td>Me 3</td></tr>
<tr><td>Please 3</td></tr>
</table>
上面的 jQuery 将每个 tr
转换为 li
项。但根据我的需要,我需要分成 3 行。所以输出应该是:
<ul id="test1">
<li>
<p class="p1">Help 1</p>
<p class="p2">Me 1</p>
<p class="p3">Please 1</p>
</li>
<li>
<p class="p1">Help 2</p>
<p class="p2">Me 2</p>
<p class="p3">Please 2</p>
</li>
<li>
<p class="p1">Help 3</p>
<p class="p2">Me 3</p>
<p class="p3">Please 3</p>
</li>
</ul>
所以我需要向每一行添加一个类并将它们分成三组。所以我需要知道,使用上面的 jQuery 语句,是否可以使用计数器来迭代 children().map
函数中的列表?
In SharePoint it has a nasty habit of using nested tables everywhere. I want to use a jQuery carousel on one of them and it does not work with tables. So I need to convert a table to a list. This is not a problem as I found some jQuery that will do it for me. Namely:
var list = $("<ul/>");
$('#tab1').find("tr").each(function() {
var p = $(this).children().map(function() {
return "<p>" + $(this).html() + "</p>";
});
list.append("<li>" + $.makeArray(p).join("") + "</li>");
});
$('#tab1').replaceWith(list);
The table structure is like:
<table id="test1">
<tr><td>Help 1</td></tr>
<tr><td>Me 1</td></tr>
<tr><td>Please 1</td></tr>
<tr><td>Help 2</td></tr>
<tr><td>Me 2</td></tr>
<tr><td>Please 2</td></tr>
<tr><td>Help 3</td></tr>
<tr><td>Me 3</td></tr>
<tr><td>Please 3</td></tr>
</table>
The jQuery above converts each tr
to a li
item. But for my needs I need to group into 3 rows. So the output should be:
<ul id="test1">
<li>
<p class="p1">Help 1</p>
<p class="p2">Me 1</p>
<p class="p3">Please 1</p>
</li>
<li>
<p class="p1">Help 2</p>
<p class="p2">Me 2</p>
<p class="p3">Please 2</p>
</li>
<li>
<p class="p1">Help 3</p>
<p class="p2">Me 3</p>
<p class="p3">Please 3</p>
</li>
</ul>
So I need to add a class to each row and group them in threes. So I need to know, using the jQuery statement above, if it is possible to use a counter to iterate through the list in the children().map
function?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试这个更明确的版本(fiddle):
Try this more explicit version (fiddle):
试试这个:
看起来很乱,但我猜这是更多的运行时优化,请参阅:
http://www.learningjquery.com/2009/03 /43439-正确使用附加的原因
Try this:
looks messy, but this is more runtime optimized i guess, see:
http://www.learningjquery.com/2009/03/43439-reasons-to-use-append-correctly
您可以使用
.slice()
对< tr/>
jsfiddle 上的示例
You can use
.slice()
to group your<tr/>
Example on jsfiddle