Перемещение по списку с помощью стрелок
Здравствуйте!
В общем, задача такова: есть список подгужаемый с помощью ajax <ul> <li> <p>El1</p> </li> <li> <p>El2</p> </li> <li> <p>El3</p> </li> </ul>- примерно такой список. Так вот, нужно сделать так, чтобы по элементам списка можно было передвигаться с помощью стрелок на клавиатуре. Пожалуйста, дайте какое-нибудь простенькое решение. Спасибо всем =) |
что означает передвигаться? при нажатии стрелок должен текст подсвечиваться или как вы это себе представляете
|
Цитата:
|
Может это поможет (сорри за говнокодерство):
<ul id="list" style="display: none" tabindex="-1"> <li> <p>El1</p> </li> <li> <p>El2</p> </li> <li> <p>El3</p> </li> </ul> <button>Show List</button> <style> .active{ outline: 1px solid red; } </style> <script> (function(){ var container = document.getElementById('list'); var items = container.getElementsByTagName('li'); var index = -1; function move(dir){ !items[index] || (items[index].className = ''); switch (dir) { case 'up': index = (index <= 0) ? items.length-1 : --index; break; case 'down': index = (index == items.length-1) ? 0 : ++index; break; default: throw Error('WTF?'); } items[index].className = 'active'; } function toggle(todo){ container.style.display = (container.style.display == 'none') ? '' : 'none'; } document.addEventListener('keydown', function(e) { var newIndex = null; switch (e.keyIdentifier) { case 'Up': e.preventDefault(); move('up'); break; case 'Down': e.preventDefault(); move('down'); break; case 'Enter': alert('Selected ' + (index+1)); toggle(); break; } }); document.querySelector('button').onclick = function() { toggle(); container.focus(); } })(); </script> Нужно править на кроссбраузерность, сразу предупреждаю. |
Спасибо большое. огромное спасибо!
проблему кроссбраузерности решил. но не знаю как в ie, даже боюсь там тестировать. но это не важно. в общем, спасибо =) |
Часовой пояс GMT +3, время: 03:23. |