<html>
<head>
<script src="jquery-1.4.4.js"></script>
<script>
$('table').each(function(a, tbl) {
var currentTableRows = $(tbl).attr('rows').length - 1;
$(tbl).find('th').each(function(i) {
var remove = 0;
var currentTable = $(this).parents('table');
var tds = currentTable.find('tr td:nth-child(' + (i + 1) + ')');
tds.each(function(j) { if (this.innerHTML == '') remove++; });
if (remove == currentTableRows) {
$(this).hide();
tds.hide();
}
});
});
</script>
</head>
<body>
<table border="1" >
<tr><td colspan="4" > alaa </td></tr>
<tr><th>Column1</th><th>Column2</th><th>Column3</th><th>Column4</th></tr>
<tr ><td>1st</td><td>1.1</td><td></td><td></td></tr>
<tr class="data"><td>2nd</td><td>2.1</td><td></td><td></td></tr>
<tr class="data"><td>3rd</td><td>3.1</td><td></td><td>1</td></tr>
<tr class="data"><td>4th</td><td></td><td></td><td></td></tr>
<tr ><td></td><td></td><td></td><td></td></tr>
<tr class="data"><td></td><td></td><td></td><td></td></tr>
</table>
</body>
这是我的代码......我认为来自库的问题,所以我尝试了许多库,如jQuery 1.4.4,1.5.2和其他
这是测试,它在http://jsfiddle.net/nlovatt/JsLn8/
处工作正常但在我的文件中...它不起作用..
的问候,
答案 0 :(得分:2)
您的代码无法正常工作有两个原因。
1)您在加载HEAD
后立即执行脚本,在此阶段,您的表不存在,因此它什么都不做。要解决此问题,请确保在页面加载时执行它。
2)当您将列中的空白单元格数与表中的总行数进行比较时,您错过了大多数列都没有的事实与表格相同的行数(您的第一行只有一列宽)。您需要与实际列中的行数进行比较,或者更好的是,只需执行相反的操作并检查非空列。
然后完整的代码变为:
$(document).ready(function() {
$('table').each(function(a, tbl) {
$(tbl).find('th').each(function(i) {
var remove = true;
var currentTable = $(this).parents('table');
var tds = currentTable.find('tr td:nth-child(' + (i + 1) + ')');
tds.each(function(j) { if (this.innerHTML != '') remove = false; });
if (remove) {
$(this).hide();
tds.hide();
}
});
});
});
答案 1 :(得分:0)
尝试这样
$('#mytable tr th').each(function(i) {
//select all td in this column
var tds = $(this).parents('table')
.find('tr td:nth-child(' + (i + 1) + ')');
//check if all the cells in this column are empty
if(tds.length == tds.filter(':empty').length) {
//hide header
$(this).hide();
//hide cells
tds.hide();
}
});
如果列中的所有单元格都为空,用于隐藏表中的列