John Smith John Smith - 10 days ago 11
Javascript Question

Cannot get jQuery Resizable API to work on html table

I don't get what is wrong here.

I am guessing that the jQuery resizable is not compatible with my table because of the CSS? that can't be right. What am I missing here?

Here is my html code:

<!DOCTYPE html>

<html>

<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>

<style type="text/css">
#data_container {
height: 175px;
position: relative;

border: 1px solid #808080;

scrollbar-base-color: #DFDFDF;
scrollbar-arrow-color: #235A81;
overflow-y: scroll;
overflow-x: scroll;
margin-top: 5px;

}

#data {
color: rgb(11,63,113);
font-family: Arial;
font-size: 9pt;
border: 0px;
width: 100%;
table-layout: fixed;
}

#data th, #data td {
border-bottom: 1px solid #808080;
border-right: 1px solid #808080;
padding: 3px;
width: 150px;
}

#data th {
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#cdcdcd");
height: 18px;
border-bottom: 1px solid #808080;
border-top: 0px;
}
#data thead tr {
top: expression(this.offsetParent.scrollTop);
position: relative;
}
#data tr.normal td {
color: #235A81;
background-color: white;
}
#data tr.highlighted td {
color: #FFFFFF;
background-color: #235A81;
}
</style>



</head>

<body>
<div id="data_container">
<table id="data" cellspacing="0" cellpadding="0">
<thead>
<tr>
<th>HEADER 1</th>
<th>HEADER 2</th>
<th>HEADER 3</th>
<th>HEADER 4</th>
<th>HEADER 5</th>
<th>HEADER 6</th>
<th>HEADER 7</th>
<th>HEADER 8</th>
<tr>
</thead>
<tbody>
<tr>
<td>content 1</td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<tr>
<tr>
<td>content 2</td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<tr>
<tr>
<td>content 3</td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<tr>
<tr>
<td>content 4</td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<tr>
<tr>
<td>content 5</td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<tr>
<tr>
<td>content 6</td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<tr>
<tr>
<td>content 7</td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<tr>
<tr>
<td>content 8</td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<tr>
<tr>
<td>content 9</td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<tr>
<tr>
<td>content 10</td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<tr>
<tr>
<td>content 11</td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<tr>
<tr>
<td>content 12</td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<tr>
<tr>
<td>content 13</td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<tr>
<tr>
<td>content 14</td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<tr>
<tr>
<td>content 15</td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<td>content </td>
<tr>
</tbody>
</table>
<script>
$(function() {
$( "#data tr th" ).resizable({
handles: 'e'
});
});
</script>
</div>
</body>

</html>

Answer

I played around with the CSS line-by-line to see what could have changed that would make jQuery not compatible with the CSS.

Changed the line from:

#data thead tr {
        top: expression(this.offsetParent.scrollTop);
        position: relative;
}

to:

#data th tr {
        top: expression(this.offsetParent.scrollTop);
        position: relative;
}