diff --git wp-admin/includes/template.php wp-admin/includes/template.php
index 23b772e..196d34f 100644
--- wp-admin/includes/template.php
+++ wp-admin/includes/template.php
@@ -419,25 +419,15 @@ function wp_comment_trashnotice() {
  * @param unknown_type $meta
  */
 function list_meta( $meta ) {
-	// Exit if no meta
-	if ( ! $meta ) {
-		echo '
-<table id="list-table" style="display: none;">
-	<thead>
-	<tr>
-		<th class="left">' . __( 'Name' ) . '</th>
-		<th>' . __( 'Value' ) . '</th>
-	</tr>
-	</thead>
-	<tbody id="the-list" class="list:meta">
-	<tr><td></td></tr>
-	</tbody>
-</table>'; //TBODY needed for list-manipulation JS
-		return;
-	}
 	$count = 0;
+	ob_start();
+	if ( ! empty( $meta ) ) {
+		foreach ( $meta as $entry )
+			echo _list_meta_row( $entry, $count );
+	}
+	$rows = ob_get_clean();
 ?>
-<table id="list-table">
+<table id="list-table"<?php echo ( $count == 0 ) ? ' style="display:none;"' : ''; ?>>
 	<thead>
 	<tr>
 		<th class="left"><?php _e( 'Name' ) ?></th>
@@ -445,10 +435,7 @@ function list_meta( $meta ) {
 	</tr>
 	</thead>
 	<tbody id='the-list' class='list:meta'>
-<?php
-	foreach ( $meta as $entry )
-		echo _list_meta_row( $entry, $count );
-?>
+<?php echo $rows; ?>
 	</tbody>
 </table>
 <?php
@@ -467,26 +454,25 @@ function _list_meta_row( $entry, &$count ) {
 	static $update_nonce = false;
 	if ( !$update_nonce )
 		$update_nonce = wp_create_nonce( 'add-meta' );
-
-	$r = '';
-	++ $count;
-	if ( $count % 2 )
-		$style = 'alternate';
-	else
-		$style = '';
-	if ('_' == $entry['meta_key'] { 0 } )
-		$style .= ' hidden';
-
+	
 	if ( is_serialized( $entry['meta_value'] ) ) {
 		if ( is_serialized_string( $entry['meta_value'] ) ) {
 			// this is a serialized string, so we should display it
 			$entry['meta_value'] = maybe_unserialize( $entry['meta_value'] );
 		} else {
-			// this is a serialized array/object so we should NOT display it
-			--$count;
 			return;
 		}
 	}
+	
+	$r = '';
+	$style = '';
+	if ('_' == $entry['meta_key'] { 0 } ) {
+		$style .= ' hidden';
+	} else {
+		++ $count; // only increase count if the row is visible
+		if ( $count % 2 )
+			$style .= ' alternate';
+	}
 
 	$entry['meta_key'] = esc_attr($entry['meta_key']);
 	$entry['meta_value'] = esc_textarea( $entry['meta_value'] ); // using a <textarea />
diff --git wp-admin/js/post.dev.js wp-admin/js/post.dev.js
index 1c39edf..d5e86d0 100644
--- wp-admin/js/post.dev.js
+++ wp-admin/js/post.dev.js
@@ -335,6 +335,11 @@ jQuery(document).ready( function($) {
 			s.data += '&post_id=' + $('#post_ID').val();
 			return s;
 		}
+		}).bind('wpListDelEnd', function(){
+			var tbody = $('#the-list');
+			if (tbody.find('tr:visible').length == 0) {
+				tbody.parent().hide();
+			}
 		});
 	}
 
