Я пишу простую функцию jQuery для выбора селектора с html-страницы, а при нажатии клавиши (вверх или вниз) следует добавить к нему класс CSS.
Проблема заключается в том, что он не обнаруживает, что селектор добавляет класс.
Селектор HTML вложен глубоко в код.
html
body
div.fixed-header
div#main-nav.primary-nav.navbar
div.navbar-inner
div.primary-nav-right-content
ul.nav
li#global-search
div.search-results
ul.search-dropdown
ul.search-entry
Я пытаюсь обнаружить селектор ul.search-entry в моем jquery.
То, что я имею прямо сейчас в своем javascript, это.
var selector = $('ul.search-entry');
var selected;
$(window).keydown(function(e){
if(e.which === 40){
if(selected){
selected.removeClass('selected');
next = selected.next();
if(next.length > 0){
selected = next.addClass('selected');
}else{
selected = selector.eq(0).addClass('selected');
}
}else{
selected = selector.eq(0).addClass('selected');
}
}else if(e.which === 38){
if(selected){
selected.removeClass('selected');
next = selected.prev();
if(next.length > 0){
selected = next.addClass('selected');
}else{
selected = selector.last().addClass('selected');
}
}else{
selected = selector.last().addClass('selected');
}
}
else{
}
});
Я слишком долго ломаю голову, и я знаю, что мне не хватает чего-то действительно маленького. Есть предположения?
Установите selector
только на строку селектора, а не на полученную коллекцию, и вызовите jQuery
для поиска по мере необходимости.
var selector = 'ul.search-entry';
var selected;
$(window).keydown(function(e){
if(e.which === 40){
if(selected){
selected.removeClass('selected');
next = selected.next();
if(next.length > 0){
selected = next.addClass('selected');
}else{
selected = $(selector).eq(0).addClass('selected');
}
}else{
selected = $(selector).eq(0).addClass('selected');
}
}else if(e.which === 38){
if(selected){
selected.removeClass('selected');
next = selected.prev();
if(next.length > 0){
selected = next.addClass('selected');
}else{
selected = $(selector).last().addClass('selected');
}
}else{
selected = $(selector).last().addClass('selected');
}
}
else{
}
});
if (selected)
,selected
никогда не получает значение. Вы хотитеselector
?