Index: src/wp-admin/js/nav-menu.js
===================================================================
--- src/wp-admin/js/nav-menu.js	(revision 25940)
+++ src/wp-admin/js/nav-menu.js	(working copy)
@@ -377,106 +377,129 @@
 			api.refreshKeyboardAccessibility();
 			api.refreshAdvancedAccessibility();
 
+			// Refresh the accessibility when the user comes close to the item in any way
+			$( '#menu-management' ).on( 'mouseenter.refreshAccessibility focus.refreshAccessibility touchstart.refreshAccessibility' , '.menu-item' , function(){
+				api.refreshAdvancedAccessibilityOfItem( $( this ).find( '.item-edit' ) );
+			});
+
 			// Events
-			$( '.menus-move-up' ).on( 'click', function ( e ) {
+			$( '#menu-management' ).on( 'click', '.menus-move-up' , function ( e ) {
 				api.moveMenuItem( $( this ).parents( 'li.menu-item' ).find( 'a.item-edit' ), 'up' );
 				e.preventDefault();
 			});
-			$( '.menus-move-down' ).on( 'click', function ( e ) {
+			$( '#menu-management' ).on( 'click', '.menus-move-down', function ( e ) {
 				api.moveMenuItem( $( this ).parents( 'li.menu-item' ).find( 'a.item-edit' ), 'down' );
 				e.preventDefault();
 			});
-			$( '.menus-move-top' ).on( 'click', function ( e ) {
+			$( '#menu-management' ).on( 'click', '.menus-move-top', function ( e ) {
 				api.moveMenuItem( $( this ).parents( 'li.menu-item' ).find( 'a.item-edit' ), 'top' );
 				e.preventDefault();
 			});
-			$( '.menus-move-left' ).on( 'click', function ( e ) {
+			$( '#menu-management' ).on( 'click', '.menus-move-left' , function ( e ) {
 				api.moveMenuItem( $( this ).parents( 'li.menu-item' ).find( 'a.item-edit' ), 'left' );
 				e.preventDefault();
 			});
-			$( '.menus-move-right' ).on( 'click', function ( e ) {
+			$( '#menu-management' ).on( 'click', '.menus-move-right', function ( e ) {
 				api.moveMenuItem( $( this ).parents( 'li.menu-item' ).find( 'a.item-edit' ), 'right' );
 				e.preventDefault();
 			});
 		},
 
-		refreshAdvancedAccessibility : function() {
+		refreshAdvancedAccessibilityOfItem : function( menuItem ) {
+			var $this = $( menuItem );
 
-			// Hide all links by default
-			$( '.menu-item-settings .field-move a' ).css( 'display', 'none' );
+			// Only refresh accessibility when necessary
+			if( true !== $this.data( 'needs_accessibility_refresh' ) ) return;
 
-			$( '.item-edit' ).each( function() {
-				var $this = $(this),
-					movement = [],
-					availableMovement = '',
-					menuItem = $this.closest( 'li.menu-item' ).first(),
-					depth = menuItem.menuItemDepth(),
-					isPrimaryMenuItem = ( 0 === depth ),
-					itemName = $this.closest( '.menu-item-handle' ).find( '.menu-item-title' ).text(),
-					position = parseInt( menuItem.index() ),
-					prevItemDepth = ( isPrimaryMenuItem ) ? depth : parseInt( depth - 1 ),
-					prevItemNameLeft = menuItem.prevAll('.menu-item-depth-' + prevItemDepth).first().find( '.menu-item-title' ).text(),
-					prevItemNameRight = menuItem.prevAll('.menu-item-depth-' + depth).first().find( '.menu-item-title' ).text(),
-					totalMenuItems = $('#menu-to-edit li').length,
-					hasSameDepthSibling = menuItem.nextAll( '.menu-item-depth-' + depth ).length;
+			var movement = [],
+				availableMovement = '',
+				menuItem = $this.closest( 'li.menu-item' ).first(),
+				depth = menuItem.menuItemDepth(),
+				isPrimaryMenuItem = ( 0 === depth ),
+				itemName = $this.closest( '.menu-item-handle' ).find( '.menu-item-title' ).text(),
+				position = parseInt( menuItem.index() ),
+				prevItemDepth = ( isPrimaryMenuItem ) ? depth : parseInt( depth - 1 ),
+				prevItemNameLeft = menuItem.prevAll('.menu-item-depth-' + prevItemDepth).first().find( '.menu-item-title' ).text(),
+				prevItemNameRight = menuItem.prevAll('.menu-item-depth-' + depth).first().find( '.menu-item-title' ).text(),
+				totalMenuItems = $('#menu-to-edit li').length,
+				hasSameDepthSibling = menuItem.nextAll( '.menu-item-depth-' + depth ).length;
 
-				// Where can they move this menu item?
-				if ( 0 !== position ) {
-					var thisLink = menuItem.find( '.menus-move-up' );
-					thisLink.prop( 'title', menus.moveUp ).css( 'display', 'inline' );
-				}
+			// Where can they move this menu item?
+			if ( 0 !== position ) {
+				var thisLink = menuItem.find( '.menus-move-up' );
+				thisLink.prop( 'title', menus.moveUp ).css( 'display', 'inline' );
+			}
 
-				if ( 0 !== position && isPrimaryMenuItem ) {
-					var thisLink = menuItem.find( '.menus-move-top' );
-					thisLink.prop( 'title', menus.moveToTop ).css( 'display', 'inline' );
-				}
+			if ( 0 !== position && isPrimaryMenuItem ) {
+				var thisLink = menuItem.find( '.menus-move-top' );
+				thisLink.prop( 'title', menus.moveToTop ).css( 'display', 'inline' );
+			}
 
-				if ( position + 1 !== totalMenuItems && 0 !== position ) {
-					var thisLink = menuItem.find( '.menus-move-down' );
-					thisLink.prop( 'title', menus.moveDown ).css( 'display', 'inline' );
-				}
+			if ( position + 1 !== totalMenuItems && 0 !== position ) {
+				var thisLink = menuItem.find( '.menus-move-down' );
+				thisLink.prop( 'title', menus.moveDown ).css( 'display', 'inline' );
+			}
 
-				if ( 0 === position && 0 !== hasSameDepthSibling ) {
-					var thisLink = menuItem.find( '.menus-move-down' );
-					thisLink.prop( 'title', menus.moveDown ).css( 'display', 'inline' );
-				}
+			if ( 0 === position && 0 !== hasSameDepthSibling ) {
+				var thisLink = menuItem.find( '.menus-move-down' );
+				thisLink.prop( 'title', menus.moveDown ).css( 'display', 'inline' );
+			}
 
-				if ( ! isPrimaryMenuItem ) {
-					var thisLink = menuItem.find( '.menus-move-left' ),
-						thisLinkText = menus.outFrom.replace( '%s', prevItemNameLeft );
-					thisLink.prop( 'title', menus.moveOutFrom.replace( '%s', prevItemNameLeft ) ).html( thisLinkText ).css( 'display', 'inline' );
-				}
+			if ( ! isPrimaryMenuItem ) {
+				var thisLink = menuItem.find( '.menus-move-left' ),
+					thisLinkText = menus.outFrom.replace( '%s', prevItemNameLeft );
+				thisLink.prop( 'title', menus.moveOutFrom.replace( '%s', prevItemNameLeft ) ).html( thisLinkText ).css( 'display', 'inline' );
+			}
 
-				if ( 0 !== position ) {
-					if ( menuItem.find( '.menu-item-data-parent-id' ).val() !== menuItem.prev().find( '.menu-item-data-db-id' ).val() ) {
-						var thisLink = menuItem.find( '.menus-move-right' ),
-							thisLinkText = menus.under.replace( '%s', prevItemNameRight );
-						thisLink.prop( 'title', menus.moveUnder.replace( '%s', prevItemNameRight ) ).html( thisLinkText ).css( 'display', 'inline' );
-					}
+			if ( 0 !== position ) {
+				if ( menuItem.find( '.menu-item-data-parent-id' ).val() !== menuItem.prev().find( '.menu-item-data-db-id' ).val() ) {
+					var thisLink = menuItem.find( '.menus-move-right' ),
+						thisLinkText = menus.under.replace( '%s', prevItemNameRight );
+					thisLink.prop( 'title', menus.moveUnder.replace( '%s', prevItemNameRight ) ).html( thisLinkText ).css( 'display', 'inline' );
 				}
+			}
 
-				if ( isPrimaryMenuItem ) {
-					var primaryItems = $( '.menu-item-depth-0' ),
-						itemPosition = primaryItems.index( menuItem ) + 1,
-						totalMenuItems = primaryItems.length,
+			if ( isPrimaryMenuItem ) {
+				var primaryItems = $( '.menu-item-depth-0' ),
+					itemPosition = primaryItems.index( menuItem ) + 1,
+					totalMenuItems = primaryItems.length,
 
-						// String together help text for primary menu items
-						title = menus.menuFocus.replace( '%1$s', itemName ).replace( '%2$d', itemPosition ).replace( '%3$d', totalMenuItems );
-				} else {
-					var parentItem = menuItem.prevAll( '.menu-item-depth-' + parseInt( depth - 1 ) ).first(),
-						parentItemId = parentItem.find( '.menu-item-data-db-id' ).val(),
-						parentItemName = parentItem.find( '.menu-item-title' ).text(),
-						subItems = $( '.menu-item .menu-item-data-parent-id[value="' + parentItemId + '"]' ),
-						itemPosition = $( subItems.parents('.menu-item').get().reverse() ).index( menuItem ) + 1;
+					// String together help text for primary menu items
+					title = menus.menuFocus.replace( '%1$s', itemName ).replace( '%2$d', itemPosition ).replace( '%3$d', totalMenuItems );
+			} else {
+				var parentItem = menuItem.prevAll( '.menu-item-depth-' + parseInt( depth - 1 ) ).first(),
+					parentItemId = parentItem.find( '.menu-item-data-db-id' ).val(),
+					parentItemName = parentItem.find( '.menu-item-title' ).text(),
+					subItems = $( '.menu-item .menu-item-data-parent-id[value="' + parentItemId + '"]' ),
+					itemPosition = $( subItems.parents('.menu-item').get().reverse() ).index( menuItem ) + 1;
 
-						// String together help text for sub menu items
-						title = menus.subMenuFocus.replace( '%1$s', itemName ).replace( '%2$d', itemPosition ).replace( '%3$s', parentItemName );
-				}
+					// String together help text for sub menu items
+					title = menus.subMenuFocus.replace( '%1$s', itemName ).replace( '%2$d', itemPosition ).replace( '%3$s', parentItemName );
+			}
 
-				$this.prop('title', title).html( title );
-			});
+			$this.prop('title', title).html( title );
+
+			// Mark this item's accessibility as refreshed
+			$this.data( 'needs_accessibility_refresh', false );
+
 		},
 
+		refreshAdvancedAccessibility : function() {
+
+			// Hide all links by default
+			$( '.menu-item-settings .field-move a' ).hide();
+
+			// Mark all menu items as unprocessed
+			$( '.item-edit' ).data( 'needs_accessibility_refresh', true );
+
+			// All open items have to be refreshed or they will show no links
+			$( '.menu-item-edit-active .item-edit' ).each( function() {
+				api.refreshAdvancedAccessibilityOfItem( this );
+			} );
+
+			return;
+		},
+
 		refreshKeyboardAccessibility : function() {
 			$( '.item-edit' ).off( 'focus' ).on( 'focus', function(){
 				$(this).off( 'keydown' ).on( 'keydown', function(e){
