Горячие клавиши jQuery с WordPress next-post

108
10

Я использую функциональность "горячих клавиш" в WordPress для создания навигации по клавиатуре внутри проекта. Хотя функциональность клавиатуры работает, но по какой-то причине она перейдет к следующему проекту, а не к предыдущему проекту. Когда я физически нажимаю стрелки с помощью мыши, все работает нормально, но по какой-то причине при использовании клавиатуры это не работает.

Вот ссылка на проект

http://geoffgeoff.com/dialect-skateboards-identity/

Это мой код js

$(document).ready(function () {

// This uses the Hotkeys jQuery plugin. See below for
// the native jQuery alternative.
$(document).bind('keydown', 'left', function() {
var url = $('#left_arrow a').attr('href');
if (url) {
window.location = url;
}
});
$(document).bind('keydown', 'right', function() {
var url = $('#right_arrow a').attr('href');
if (url) {
window.location = url;
}
});

});

спросил(а) 2021-01-25T16:32:50+03:00 4 месяца, 4 недели назад
1
Решение
118

вы не можете назначить ключ таким образом. на самом деле вы связываете две функции с событием global-keydown, вторая функция перезаписывает первый. попробуйте нажать любую клавишу во время посещения вашего сайта - каждый ключ загрузит следующую статью.

правильным способом является обнаружение нажатой клавиши внутри функции, а затем запуск щелчка по правильному анкерному элементу:

$(document).bind('keydown', function (evnt) {

var elem = evnt.keyCode === 37 // left arrow
? '#left_arrow a'
: evnt.keyCode === 39 // right arrow
? '#right_arrow a'
: false;

if ( !elem ) {
return;
}

$(elem).trigger('click');

});

если keyCode равен 37, была нажата стрелка влево, если код ключа - 39, была нажата стрелка вправо. используя тернарный оператор, можно присваивать false элемен-переменной false, если не было нажата ни левая, ни правая. в этом случае функция возвращает false, и ничего не происходит.

в противном случае срабатывает событие click [событие CN10] или право-якорь.

ответил(а) 2021-01-25T16:32:50+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема