Вы должны сделать что-то вроде ниже, чтобы разрешить все другие клавиши, кроме клавиш со стрелками влево и вправо в начале вашей функции ->
var keyCode = e.keyCode;
//return if it is not left/right arrow key
if (keyCode != 39 && keyCode != 37) {
return;
}
Я изменил ваш HTML и скрипт немного, чтобы он работал.Смотрите мой подход jsFiddle здесь
Next () и next ([селектор]) работают по-разному.Прежний next просто получает следующего родного брата, в противном случае последний пытается сначала получить список соответствия ($ ('. Active') в вашем случае и выбирает следующий соответствующий элемент (который равен 0).
Например,
<p class="selected active">Hello Again</p>
<span class="log" >Test</span>
<p class="selected">Hello Again</p>
<div><span>And Again</span></div>
И этот $("p.selected.active").next('p.selected')
может выглядеть так, как будто он собирается выбрать следующий p.selected, но это не так. Мне кажется, что jQuery перебирает $("p.selected.active")
, чтобы найтисоответствие 'p.selected', которое будет возвращать пустое значение.
Я использовал .next () и добавил предложение where, чтобы найти следующий тег img в братьях и сестрах,
$targetElement = $('.active').next();
while ($targetElement.length != 0 && $targetElement.hasClass('img') == false) {
$targetElement = $targetElement.next();
}
Надеюсьэто помогает
Редактировать:
Проверить здесь .
- Добавить флаг isAnimating, чтобы избежать спама при отключении клавиатуры.
- Модифицированный CSS
.active img{ border: 2px dotted red; }
. - Немного изменил HTML.