分页jQuery next和以前用键盘控制 - .trigger('click')不起作用

时间:2012-09-03 08:21:13

标签: javascript jquery

我正在进行分页。

为了帮助用户使用键盘快捷键更改页面,而不是单击鼠标,我想出了一个jQuery解决方案,用CTRL + →CTRL+ ←

捕获用户键盘事件
$(document).keydown(function(event) {
  if (event.ctrlKey) { // if ctrl is being held
      var keycode = event.keyCode ? event.keyCode : event.which;
        if(keycode === 39) { // for rightwards arrow (for leftwards arrow keycode === 37)
           window.open($('#pagination li.next a').attr('href'), '_parent'); // open the next link
            }
  }
});

我的问题是为什么它不适用于常规.trigger('click'),如下所示:

$('#pagination li.next a').trigger('click');

2 个答案:

答案 0 :(得分:1)

jsFiddle Live Example

$('#next').click(function() {
    window.open('http://www.stackoverflow.com', '_blank');
});

$('#prev').click(function() {
    window.open('http://www.google.com', '_blank');
});

$(function() {
    $('#next').trigger('click')
})

答案 1 :(得分:1)

我没有找到问题的确切答案,我想根据收集的信息和人们的帖子发布一个略有不同且最终的,运作良好的解决方案。谢谢那些回复的人!

当你构建分页时,我相信,用户很乐意只需点击←Ctrl / Ctrl→即可在页面之间切换。

以下代码只有一个改进 - 错误发生在第一页和最后一页 - 当页面上没有下一个或上一个按钮时,因为您在最后一个分页或第一个分页时,返回的初始代码undefined(显然),所以我修复了它,并希望与那些可能感兴趣的人分享最终结果:

$(document).keydown(function (event) {
var keycode = event.keyCode ? event.keyCode : event.which;
  if (event.ctrlKey) {
    if (keycode === 39) {
        var nextExists = $('#pagination li.next a').attr('href');
        if (nextExists) window.location.href = $('#pagination li.next a').attr("href");
    }
    if (keycode === 37) {
        var previousExists = $('#pagination li.previous a').attr('href');
        if (previousExists) window.location.href = $('#pagination li.previous a').attr("href");
    }
  }
});