我在1页上有2张桌子。我希望用户能够单击该表,然后使用箭头键导航到上一个和下一个。我能够在所有浏览器中启动keyup事件的唯一方法是将它们直接附加到“文档”。我已经连接了一个事件,将一个“网格聚焦”类添加到焦点的网格中,我尝试将其用作我事件的选择器,但我无法获得任何事件操作。
事件绑定
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文档中,技术上说我应该使用$ doc.off('keyup',keyNav);取消绑定它,但它没有解除绑定事件,我得到它的倍数。
所以核心问题是,
这是一个小提琴:http://jsfiddle.net/93fp293w/
基本上,我没有输入框只是跨越,我基本上只是使用箭头键让他们更容易翻阅所有数据。我相信小提琴手对这种情况非常准确。我觉得我所要求的是不可能的,因为我不会有一个实际的控制焦点,如果是这种情况我可以接受,但我想我希望有一个解决方法。
答案 0 :(得分:1)
附加密钥的问题在于,父div必须是可变的(contenteditable)。否则你必须附在文件上。
我已经更新了小提琴,可能是一个黑客让我知道这是否适合你?
http://jsfiddle.net/puneethp/qfpyeydg/3/
$(document).on("keyup", function (e) {
e.target = $(".focus")[0];
..
}
如果你一次只关注一个专栏,那么我以前的小提琴仍然有用。