У меня недостаточно знаний в JQuery, чтобы понять, где в приведенном ниже коде я ошибся.Я не уверен насчет обработчика .live
.В любом случае, этот код останавливается на первом <li>
с добавленным классом selected
при событии нажатия клавиши.Я хочу, чтобы он проверял все <li>
на каждой клавише.Спасибо за любые конструктивные комментарии.
- предложить - поле ввода, при вводе ключа появляется список автозаполнения,
- результат -
<ul id='result'></ul>
- выбран -
<li>
'с
Сценарий:
$('#suggest').live('keyup keydown', function(event) {
var search = $('#suggest').val();
$.post('search.php', {
search: search
}, function(data) {
$('#dropdown').html(data);
switch (event.which) {
case 40:
var found = 0;
$('#result li').each(function() {
if ($(this).attr("class") == "selected") {
found = 1;
}
});
if (found == 1) {
var sel = $("#result li[class='selected'");
// check if this is a last element in the list
// if so then add selected class to the first element in the list
if (sel.next().text() == '') {
$("#result li:first").addClass("selected");
} else {
sel.next().addClass('selected');
// remove class selected from previous item
sel.removeClass('selected');
}
} else {
$("#result li:first").addClass("selected");
}
break;
case 38:
//bla-bla
break;
}
});
});