Перемещение по списку с помощью стрелок
Здравствуйте!
В общем, задача такова: есть список подгужаемый с помощью 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, время: 14:22. |