У меня есть 2 таблицы на 1 странице. Я хотел бы, чтобы пользователь мог щелкнуть по таблице, а затем использовать клавиши со стрелками для перехода к предыдущему и следующему. Единственный способ, с помощью которого я мог активировать события блокировки во всех браузерах, - это привязать их непосредственно к «документу». Я подключил событие, чтобы добавить класс с сеткой в сетку, которая находится в фокусе, и я попытался использовать это как селектор для своих событий, но тогда я не могу получить какое-либо действие по событию.привязка ключевых событий на уровне таблицы
Event Binding
function attachInitEvents() {
if ($self.config.pageHotKeysEnabled) {
var keyNav = function(e) {
if (e.keyCode == 37 && paging.hasPrevious) { // left
$self._log.info('Left arrow key pressed.');
fetchData('prev');
}
if (e.keyCode == 39 && paging.hasNext) { //right
$self._log.info('Right arrow key pressed.');
fetchData('next');
}
}
var $doc = $(document);
// hot key support
$doc.off('keyup');
$doc.on('keyup', keyNav);
}
}
Я имею другой вопрос, где я делаю $ doc.off ('KeyUp'). Я думаю, что это часть проблемы, поскольку она отбрасывает все события keyup, что я действительно хочу, так это просто отменить событие, которое я пытаюсь прикрепить, если оно существует. В jQuery docs это технически говорит, что я должен использовать $ doc.off ('keyup', keyNav); развязать его, но он не отвязывает событие, и я получаю его кратные.
Так основные вопросы,
- Могу ли я вызвать событие KeyUp без привязки к документу и я могу сделать это от уровня стола?
- Как я могу правильно убедиться, что я не перевязываю снова и снова? Теперь, если на этой странице есть 2 таблицы, я думаю, я ожидал бы, что будет 2 событиями по одному для каждой таблицы, а затем класс с привязкой .grid будет тем, что позволяет событию запускать или нет?
Вот Fiddle: http://jsfiddle.net/93fp293w/
В принципе, у меня нет поля ввода он просто пролетами, я в основном делает его легче для них, чтобы пролистать все данные только с помощью клавиш со стрелками. Я считаю, что скрипач довольно точно соответствует ситуации. Я чувствую, что то, что я прошу, невозможно, так как у меня не будет фактического контроля в фокусе, и если это так, я могу принять это, но, я думаю, я надеюсь, что есть работа.
1. Вы можете связать '.keyUp()' с чем угодно, но действительно имеет смысл привязать его к чему-то, что требует взаимодействия с клавиатурой. 2. Похоже, вы хотите отключить пузырь событий. Прочитайте метод 'e.stopPropagation()' и посмотрите, соответствует ли он вашим потребностям. – DevlshOne
Я мог бы говорить глупости, но разве ты не можешь это сделать? это скрипка, в которой я пытался ... http://jsfiddle.net/puneethp/qfpyeydg/ – DarthCoder
Спасибо Дарту, я даже не был уверен, как начать создавать скрипку за то, что я просил. Я обновляю свой вопрос, используя вашу скрипку, чтобы лучше понять, что происходит. – Tony