$('table.arrow-nav').keydown(function(e){ var $table = $(this); var $active = $('input:focus,select:focus',$table); var $next = null; var focusableQuery = 'input:visible,select:visible,textarea:visible'; var position = parseInt( $active.closest('td').index()) + 1; console.log('position :',position); switch(e.keyCode){ case 37: // $next = $active.parent('td').prev().find(focusableQuery); break; case 38: // $next = $active .closest('tr') .prev() .find('td:nth-child(' + position + ')') .find(focusableQuery) ; break; case 39: // $next = $active.closest('td').next().find(focusableQuery); break; case 40: // $next = $active .closest('tr') .next() .find('td:nth-child(' + position + ')') .find(focusableQuery) ; break; } if($next && $next.length) { $next.focus(); } });