Corrected according to @Yi Jiang's suggestions. Old version below
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.js"></script>
<style type="text/css">
ul { width: 100px; float: left; border: 1px solid red; }
</style>
<script type="text/javascript">
$(window).load(function(){
var firstCol = $('#first'),
secondCol = $('#second');
while(firstCol.height() < secondCol.height()){
firstCol.append(secondCol.children().first());
}
});
</script>
</head>
<body>
<ul id="first">
<li>Content 1</li>
<li>Content 2</li>
<li>Content 3</li>
<li>Content 4</li>
<li>Content 5</li>
<li>Content 6</li>
<li>Content 7</li>
<li>Content 8</li>
<li>Content 9</li></ul>
<ul id="second"></ul>
</body></html>
If you fill col1 and then move elements to col2. With an odd amount of elements this makes col2 taller, which is why I do it backwards
Original answer
this should be compatible even with old browsers
<html>
<head>
<style>
#col1, #col2 { border: 1px solid red; float:left; }
</style>
<script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script>
$(document).ready( function() {
var c1 = $('#col1')[0];
var c2 = $('#col2')[0];
while (c1.clientHeight < c2.clientHeight) {
var elm = $('#col2 *:last')[0];
c1.innerHTML = elm.outerHTML + c1.innerHTML;
elm.outerHTML='';
}
} );
</script>
</head>
<body>
<div id="col1">
</div>
<div id="col2">
<div>content01</div>
<div>content02</div>
<div>content03</div>
<div>content04</div>
<div>content05</div>
<div>content06</div>
<div>content07</div>
</div>
</body>
</html>