好吧,我想我会为寻求额外帮助的其他人提供一个稍微不同的 jQuery 解决方案来解决您的困境。
如果您有使用脚本,不妨让它做所有事情(以下脚本需要4.2ms 运行,这对我来说似乎很合理:-)
基本上下面的操作是将您的tabular-data 转换为multidimensional array。
1, 2, 3, 4
5, 6, 7, 8
9, 10, 11, 12
变成:
[[1,5,9],[2,6,10],[3,7,11],[4,8,12]]
然后,只需让它根据新的array 和一对for-loops 重写您的table。
有一点需要注意,您必须将其绑定到 media query 或 window.resize 处理程序才能获得您正在寻找的后天效果。这就像更改我分配的 on.click 处理程序一样简单。
看看吧!非常漂亮:
HTML:
<input type="button" id="switch" value="switch" \>
<table id="switchItems">
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
</tr>
<tr>
<td>...etc
jQuery 脚本:
$(function(){
$('#switch').on('click', function(){
var items = [];
var itemsConv = [];
var table = $('#switchItems');
var row,cell;
// FIND ALL OF THE DATA
$("tr").each(function(){
var trRow = [];
$(this).children().each(function() {
trRow.push($(this).text());
});
items.push(trRow);
});
for(var j=0;j<items[0].length;j++){
var newRow = [];
for(var i=0;i<items.length;i++){
newRow.push(items[i][j]);
}
itemsConv.push(newRow);
}
// KILL OUR CURRENT DATA IN THE TABLE
table.empty();
// REWRITE OUR TABLE WITH NEW DATA
for(var i=0; i<itemsConv.length; i++){
row = $( '<tr />' );
table.append( row );
for(var j=0; j<itemsConv[i].length; j++){
cell = $('<td>'+itemsConv[i][j]+'</td>');
row.append( cell );
}
}
});
});
希望对您有所帮助!