<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/
но в моем файле .. это не работает.
С уважением,
Есть две причины, по которым ваш код не работает.
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(); } }); }); });
попробуй так
$('#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(); } });
для скрытия столбцов в таблице, если все ячейки в столбце пусты