这是我对同一问题的解决方案的演示。您可以修复任何您想要的列。只需在表格上添加“固定列”类,在要保持固定的 th 和 td 上添加“固定列”。然后调用 responsiveTables.init() 来完成剩下的工作。我选择更改原始表上的 id 以使其与 JSF 事件兼容。
这是HTML:
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover fixed-columns">
<thead>
<tr>
<th class="fixed-column">#</th>
...
</tr>
</thead>
<tbody>
<tr>
<td class="fixed-column">1</td>
...
</tr>
...
</tbody>
</table>
</div>
这是Javascript:
var responsiveTables = {
init: function() {
$(document).find('.fixed-columns').each(function (i, elem) {
responsiveTables.fixColumns(elem);
});
},
fixColumns: function(table, columns) {
var $table = $(table);
$table.removeClass('fixed-columns');
var $fixedColumns = $table.clone().attr('id', $table.attr('id') + '-fixed').insertBefore($table).addClass('fixed-columns-fixed');
$fixedColumns.find('*').each(function (i, elem) {
if ($(this).attr('id') !== undefined) {
$table.find("[id='" + $(this).attr("id") + "']").attr('id', $(this).attr('id') + '-hidden');
}
if ($(this).attr('name') !== undefined) {
$table.find("[name='" + $(this).attr("name") + "']").attr('name', $(this).attr('name') + '-hidden');
}
});
if (columns !== undefined) {
$fixedColumns.find('tr').each(function (x, elem) {
$(elem).find('th,td').each(function (i, elem) {
if (i >= columns) {
$(elem).remove();
}
});
});
} else {
$fixedColumns.find('tr').each(function (x, elem) {
$(elem).find('th,td').each(function (i, elem) {
if (!$(elem).hasClass('fixed-column')) {
$(elem).remove();
}
});
});
}
$fixedColumns.find('tr').each(function (i, elem) {
$(this).height($table.find('tr:eq(' + i + ')').height());
});
}
};
responsiveTables.init();
和CSS:
.table-responsive > .fixed-columns-fixed {
position: absolute;
display: inline-block;
width: auto;
border-right: 2px solid #ddd;
background-color: #fff;
}