SO Help: how to freeze table header using javascript

http://stackoverflow.com/questions/18015776/how-to-freeze-table-header-using-javascript/18015997#18015997

by SpYk3

HTML

<div id="tableContainer" class="tableContainer">
	<table border="0" cellpadding="0" cellspacing="0" width="100%" class="scrollTable">
		<thead class="fixedHeader">
			<tr>
				<th><a href="#">Header 1</a></th>
				<th><a href="#">Header 2</a></th>
				<th><a href="#">Header 3</a></th>
			</tr>
		</thead>
		<tbody class="scrollContent">
			<tr>
				<td>Cell Content 1</td>
				<td>Cell Content 2</td>
				<td>Cell Content 3</td>
			</tr>
			<tr>
				<td>More Cell Content 1</td>
				<td>More Cell Content 2</td>
				<td>More Cell Content 3</td>
			</tr>
			<tr>
				<td>Even More Cell Content 1</td>
				<td>Even More Cell Content 2</td>
				<td>Even More Cell Content 3</td>
			</tr>
			<tr>
				<td>And Repeat 1</td>
				<td>And Repeat 2</td>
				<td>And Repeat 3</td>
			</tr>
			<tr>
				<td>Cell Content 1</td>
				<td>Cell Content 2</td>
				<td>Cell Content 3</td>
			</tr>
			<tr>
				<td>More Cell Content 1</td>
				<td>More Cell Content 2</td>
				<td>More Cell Content 3</td>
			</tr>
			<tr>
				<td>Even More Cell Content 1</td>
				<td>Even More Cell Content 2</td>
				<td>Even More Cell Content 3</td>
			</tr>
			<tr>
				<td>And Repeat 1</td>
				<td>And Repeat 2</td>
				<td>And Repeat 3</td>
			</tr>
			<tr>
				<td>Cell Content 1</td>
				<td>Cell Content 2</td>
				<td>Cell Content 3</td>
			</tr>
			<tr>
				<td>More Cell Content 1</td>
				<td>More Cell Content 2</td>
				<td>More Cell Content 3</td>
			</tr>
			<tr>
				<td>Even More Cell Content 1</td>
				<td>Even More Cell Content 2</td>
				<td>Even More Cell Content 3</td>
			</tr>
			<tr>
				<td>And Repeat 1</td>
				<td>And Repeat 2</td>
				<td>And Repeat 3</td>
			</tr>
			<tr>
				<td>Cell Content 1</td>
				<td>Cell Content 2</td>
				<td>Cell Content 3</td>
			</tr>
			<tr>
				<td>More Cell Content 1</td>
				<td>More Cell Content 2</td>
				<td>More Cell Content 3</td>
			</tr>
			<tr>
				<td>Even More Cell Content 1</td>
				<td>Even More Cell Content 2</td>
				<td>Even More Cell...

CSS

/* define height and width of scrollable area. Add 16px to width for scrollbar          */
div.tableContainer {
    clear: both;
    border: 1px solid #963;
    height: 285px;
    overflow: auto;
    width: 756px
}

/* Reset overflow value to hidden for all non-IE browsers. */
html>body div.tableContainer {
    overflow: hidden;
    width: 756px
}

/* define width of table. IE browsers only                 */
div.tableContainer table {
    float: left;
    width: 740px
}

/* define width of table. Add 16px to width for scrollbar.           */
/* All other non-IE browsers.                                        */
html>body div.tableContainer table {
    width: 756px
}

/* set table header to a fixed position. WinIE 6.x only                                       */
/* In WinIE 6.x, any element with a position property set to relative and is a child of       */
/* an element that has an overflow property set, the relative value translates into fixed.    */
/* Ex: parent element DIV with a class of tableContainer has an overflow property set to auto */
thead.fixedHeader tr {
    position: relative
}

/* set THEAD element to have block level attributes. All other non-IE browsers            */
/* this enables overflow to work on TBODY element. All other non-IE, non-Mozilla browsers */
html>body thead.fixedHeader tr {
    display: block
}

/* make the TH elements pretty */
thead.fixedHeader th {
    background: #C96;
    border-left: 1px solid #EB8;
    border-right: 1px solid #B74;
    border-top: 1px solid #EB8;
    font-weight: normal;
    padding: 4px 3px;
    text-align: left
}

/* make the A elements pretty. makes for nice clickable headers                */
thead.fixedHeader a, thead.fixedHeader a:link, thead.fixedHeader a:visited {
    color: #FFF;
    display: block;
    text-decoration: none;
    width: 100%
}

/* make the A elements pretty. makes for nice clickable headers                */
/* WARNING: swapping the background on hover may cause problems in...

JavaScript

/*    just a lil js to alternate row colors    */
$('table tbody tr').each(function(i) {
    if (i%2 == 0) {
        $(this).children('td').css('background-color', '#EEE');
    }
});