2015-09-20 43 views
0

我用下面的jQuery脚本来浏览列表的钥匙: http://firedev.com/jquery.keynav/使用jQuery导航键时滚动?

由于名单很长,有时,它会很长的路要走下去。如果我向下导航,那么它会关闭屏幕。

什么是一个很好的解决方案,以便浏览器在关闭屏幕或其他解决方案后向下滚动?如果有人能够帮助我举例,我将不胜感激。谢谢!

+0

嗨!你已经尝试过一些东西吗?你能为你的问题添加一些代码吗? –

+0

我没有先生。现在,我缺乏必要的技能来为这种情况考虑解决方案,这就是为什么我在这里注册希望得到一些帮助。该代码与该链接中的源代码相同。 –

+0

你可以做两件不同的事情:改变样式,以确保所有的标签可以在屏幕上可视化而不需要滚动或更改脚本以查看标签的偏移量,并且如果大于屏幕以编程方式向下滚动 – kamus

回答

0

在jquery.keynav找到setCurrent功能

function setCurrent(i,j) { 
      if (i<0) i=(matrix.length-1); 
      if (i>=matrix.length) i=0; 
      if (j<0) j=(matrix[i].length-1); 
      if (j>=matrix[i].length) j=0; 
      current.removeClass('selected'); 
      current = $(matrix[i][j]); 
      current.addClass('selected'); 
      x=i; 
      y=j; 
if(!checkVisible(current)) 
       $('html, body').animate({ 
         scrollTop: current.offset().top 
       }, 1000); 
      } 


function checkVisible(elm, eval) { 
    eval = eval || "visible"; 
    var vpH = $(window).height(), // Viewport Height 
     st = $(window).scrollTop(), // Scroll Top 
     y = $(elm).offset().top, 
     elementHeight = $(elm).height(); 

    if (eval == "visible") return ((y < (vpH + st)) && (y > (st - elementHeight))); 
    if (eval == "above") return ((y < (vpH + st))); 
} 

它会滚动到元素

+0

谢谢你的例子Kamus。这个例子可以工作,但是它在每次向上/向下击键时上下滚动。你知道我是如何做到这一点的:如果下一个列表项不可见,它会上下滚动。 –

+0

是的,这是可能的,我已经更新了示例 – kamus

+0

惊人的工作@Kamus。尝试了很快,它似乎很好! –