2015-09-20 61 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。嘗試了很快,它似乎很好! –