@vvmgev

Почему хорошо не работает last() функция в jquery?

вот пример jsfiddle.net/0honhzk5
  • Вопрос задан
  • 362 просмотра
Решения вопроса 2
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
Это не функция это вы хорошо не работаете...

if(event.keyCode == 38){ //Если нажата клавиша 38
  var ind = $('.select');
  
  if(ind.index() == 0){ //Если сейчас "выбран" первый li
     $('ul>li').first().removeClass('select');
     $('ul>li').last().addClass('select'); //Выбрать последний
   }
   //А затем в любом случае выбрать тот, что выше
   $('ul>li.select').removeClass('select').prev().addClass('select'); 
}


Code Max-edition «-- Тык
if(event.keyCode == 38){ 
  var ind = $('.select');
  
  if(ind.index() == 0){
     $('ul>li').first().removeClass('select');
     $('ul>li').last().addClass('select');
   }else{
     $('ul>li.select').removeClass('select').prev().addClass('select'); 
   }
}


-
Code Mini-edition «-- Тык
if(event.keyCode == 38){
  var 
      lies = $("li"),
      sel = lies.filter('.select').removeClass('select');
  ;
  (sel.index() ? sel.prev() : lies.last()).addClass("select");
}

Ответ написан
Комментировать
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
Ответ вам, собственно, уже дал Виталий Инчин ☢ , но можно немного оптимизировать
var list = $('li'), last = list.length - 1, indx = 0, dir = {40: 1,38: -1};
$('body').on('keyup', function (e) {
    indx = list.index(list.filter('.select'));
    list.eq( list.eq(indx + dir[e.which]).length ? indx + dir[e.which] : (e.which ? 0 : last)).addClass('select');
    list.eq(indx).removeClass('select');
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы