diff --git wp-admin/css/colors-classic.dev.css wp-admin/css/colors-classic.dev.css
index 0b8183c..d99a7d5 100644
--- wp-admin/css/colors-classic.dev.css
+++ wp-admin/css/colors-classic.dev.css
@@ -1408,11 +1408,15 @@ fieldset.inline-edit-col-right .inline-edit-col {
 	color: #555;
 }
 
-.tablenav .tablenav-pages a {
+.tablenav .tablenav-pages a, .tablenav .tablenav-pages span.disabled {
 	border-color: #D1E5EE;
 	background: #eee url('../images/menu-bits-vs.gif?ver=20101102') repeat-x scroll left -379px;
 }
 
+.tablenav .tablenav-pages span.disabled {
+	color:#ccc;
+}
+
 .tablenav .tablenav-pages a:hover {
 	color: #d54e21;
 	border-color: #d54321;
diff --git wp-admin/css/colors-fresh.dev.css wp-admin/css/colors-fresh.dev.css
index ede8f38..a325d37 100644
--- wp-admin/css/colors-fresh.dev.css
+++ wp-admin/css/colors-fresh.dev.css
@@ -1405,11 +1405,15 @@ fieldset.inline-edit-col-right .inline-edit-col {
 	color: #555;
 }
 
-.tablenav .tablenav-pages a {
+.tablenav .tablenav-pages a, .tablenav .tablenav-pages span.disabled {
 	border-color: #e3e3e3;
 	background: #eee url('../images/menu-bits.gif?ver=20100610') repeat-x scroll left -379px;
 }
 
+.tablenav .tablenav-pages span.disabled {
+	color: #ccc;
+}
+
 .tablenav .tablenav-pages a:hover {
 	color: #d54e21;
 	border-color: #d54321;
diff --git wp-admin/css/wp-admin.dev.css wp-admin/css/wp-admin.dev.css
index 13694dd..3171b04 100644
--- wp-admin/css/wp-admin.dev.css
+++ wp-admin/css/wp-admin.dev.css
@@ -1438,7 +1438,8 @@ th.asc:hover span.sorting-indicator {
 }
 
 .tablenav .tablenav-pages a,
-.tablenav-pages span.current  {
+.tablenav-pages span.current,
+.tablenav-pages span.disabled  {
 	text-decoration: none;
 	border: none;
 	padding: 3px 6px;
diff --git wp-admin/includes/class-wp-list-table.php wp-admin/includes/class-wp-list-table.php
index 024c7b6..8964e79 100644
--- wp-admin/includes/class-wp-list-table.php
+++ wp-admin/includes/class-wp-list-table.php
@@ -481,20 +481,30 @@ class WP_List_Table {
 		$current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
 
 		$page_links = array();
-
-		$page_links[] = sprintf( "<a class='%s' title='%s' href='%s'>%s</a>",
-			'first-page',
-			esc_attr__( 'Go to the first page' ),
-			esc_url( remove_query_arg( 'paged', $current_url ) ),
-			'&laquo;&laquo;'
-		);
-
-		$page_links[] = sprintf( "<a class='%s' title='%s' href='%s'>%s</a>",
-			'prev-page',
-			esc_attr__( 'Go to the previous page' ),
-			esc_url( add_query_arg( 'paged', max( 1, $current-1 ), $current_url ) ),
-			'&laquo;'
-		);
+		
+		if ( $current == 1 ) {
+			$page_links[] = sprintf( "<span class='%s'>%s</span>",
+				'first-page disabled',
+				'&laquo;&laquo;'
+			);
+			$page_links[] = sprintf( "<span class='%s'>%s</span>",
+				'prev-page disabled',
+				'&laquo;'
+			);
+		} else {
+			$page_links[] = sprintf( "<a class='%s' title='%s' href='%s'>%s</a>",
+				'first-page',
+				esc_attr__( 'Go to the first page' ),
+				esc_url( remove_query_arg( 'paged', $current_url ) ),
+				'&laquo;&laquo;'
+			);
+			$page_links[] = sprintf( "<a class='%s' title='%s' href='%s'>%s</a>",
+				'prev-page',
+				esc_attr__( 'Go to the previous page' ),
+				esc_url( add_query_arg( 'paged', max( 1, $current-1 ), $current_url ) ),
+				'&laquo;'
+			);
+		}
 
 		$html_current_page = sprintf( "<input class='current-page' title='%s' type='text' name='%s' value='%s' size='%d' />",
 			esc_attr__( 'Current page' ),
@@ -505,19 +515,31 @@ class WP_List_Table {
 		$html_total_pages = sprintf( "<span class='total-pages'>%s</span>", number_format_i18n( $total_pages ) );
 		$page_links[] = sprintf( _x( '%s of %s', 'paging' ), $html_current_page, $html_total_pages );
 
-		$page_links[] = sprintf( "<a class='%s' title='%s' href='%s'>%s</a>",
-			'next-page',
-			esc_attr__( 'Go to the next page' ),
-			esc_url( add_query_arg( 'paged', min( $total_pages, $current+1 ), $current_url ) ),
-			'&raquo;'
-		);
+		if ( $current == $total_pages ) {
+			$page_links[] = sprintf( "<span class='%s'>%s</span>",
+				'next-page disabled',
+				'&raquo;'
+			);
 
-		$page_links[] = sprintf( "<a class='%s' title='%s' href='%s'>%s</a>",
-			'last-page',
-			esc_attr__( 'Go to the last page' ),
-			esc_url( add_query_arg( 'paged', $total_pages, $current_url ) ),
-			'&raquo;&raquo;'
-		);
+			$page_links[] = sprintf( "<span class='%s'>%s</span>",
+				'last-page disabled',
+				'&raquo;&raquo;'
+			);
+		} else {
+			$page_links[] = sprintf( "<a class='%s' title='%s' href='%s'>%s</a>",
+				'next-page',
+				esc_attr__( 'Go to the next page' ),
+				esc_url( add_query_arg( 'paged', min( $total_pages, $current+1 ), $current_url ) ),
+				'&raquo;'
+			);
+
+			$page_links[] = sprintf( "<a class='%s' title='%s' href='%s'>%s</a>",
+				'last-page',
+				esc_attr__( 'Go to the last page' ),
+				esc_url( add_query_arg( 'paged', $total_pages, $current_url ) ),
+				'&raquo;&raquo;'
+			);
+		}
 
 		$output .= join( "\n", $page_links );
 
diff --git wp-admin/js/list-table.dev.js wp-admin/js/list-table.dev.js
index d44e7a7..b87c404 100644
--- wp-admin/js/list-table.dev.js
+++ wp-admin/js/list-table.dev.js
@@ -148,7 +148,54 @@ listTable.init();
 
 // Ajaxify various UI elements
 
-	function change_page(paged, $el) {
+	var spanify = function(selectors) {
+		$('.tablenav-pages a').
+			filter(selectors).
+			each(function(){
+				var $this = $(this), span = $('<span />');
+				span.
+					addClass($this.attr('class') + ' disabled').
+					text($this.text());
+				$this.replaceWith(span);
+			});
+	};
+	
+	var linkify = function() {
+		$('.tablenav-pages span.disabled').each(function(){
+			var $this = $(this), a = $('<a />');
+			a.
+				addClass($this.attr('class')).
+				removeClass('disabled').
+				text($this.text());
+				
+			$this.replaceWith(a);
+		});
+	}
+	
+	var updatePageLinks = function(paged) {			
+		$('.tablenav-pages a').each(function(){
+			var a = $(this), href = '#';
+			
+			switch (a.attr('class')) {
+				case 'first-page':
+					href = $.query.set('paged', 1).toString();
+					break;
+				case 'prev-page':
+					href = $.query.set('paged', paged - 1).toString();
+					break;
+				case 'next-page':
+					href = $.query.set('paged', paged + 1).toString();
+					break;
+				case 'last-page':
+					href = $.query.set('paged', listTable.get_total_pages()).toString();
+					break;
+			}
+			
+			a.attr('href', href);
+		});
+	};
+
+	function change_page(paged, $el) {		
 		if ( paged < 1 )
 			paged = 1;
 
@@ -158,13 +205,26 @@ listTable.init();
 		listTable.update_rows({'paged': paged}, false, function() {
 			if ( $el.parents('.tablenav.bottom').length )
 				scrollTo(0, 0);
+			
+			// convert disabled buttons to links
+			linkify();
+				
+			// disable pagination links in case of first or last page
+			if ( paged == 1 ) {
+				spanify('.prev-page, .first-page');
+			} else if ( paged == listTable.get_total_pages() ) {
+				spanify('.next-page, .last-page');
+			}
+			
+			// update href attribute of pagination links
+			updatePageLinks(paged);
 				
 			$(listTable).trigger('changePage');
 		});
 	}
 
 	// pagination
-	$('.tablenav-pages a').click(function() {
+	$('.tablenav-pages a').live('click', function() {
 		var $el = $(this),
 			paged = $.query.GET('paged');
 
