2016-08-20 58 views
-2

我希望用戶使用向下箭頭鍵向下滾動列表。這是實施的。Jquery基於位置的同一個鍵的多個動作

用戶應該能夠加載下一個列表,當他們擊中最後一個項目時。這也實現了。

我不希望用戶能夠從一個列表的頂部按住向下鍵並從不放手,在底部加載越來越多的列表。

有沒有辦法讓我「推」一個keyup事件給客戶端,說他們到達列表底部後必須再次手動按下向下箭頭鍵?


編輯:添加一些代碼,以防萬一。

$(document).keydown(function(e) { 
    switch(e.which) { 
    case 40: 
     var lineID = Number($('.active').data('lineid')); 
     if(lineID != Number($('body > span').last().data('lineid'))) { 
     //update lineID to next number and activate next line 
     } 
     if(lineID == Number($('body > span').last().data('lineid'))) { 
     //update location to next list article 
     } 
     break; 
    default: return; 
    } 
    e.preventDefault(); 
}); 

我現在需要做的是以某種方式阻止用戶按住下鍵並在到達底部後加載所有列表。理想情況下,我認爲在某種程度上「推」關鍵事件會令人滿意。因爲這將允許用戶快速滾動到底部,但必須再次按下「下」才能加載下一個列表,從而使其容易到達底部並防止意外加載下一個列表。

+2

哪裏碼? –

+0

@SandeepNayak可悲的不在這裏,但我假設的地方。 – Script47

+0

@victoroux你試過我的代碼嗎? –

回答

0

使用此代碼爲

// A variable to check when user is at the end of page 
var endOfPage = false; 

// keydown handler 
$(document).keydown(function(e){ 
if(endOfPage==false){ 
    // Do our thing 
    switch(e.keyCode){ 
    case 40: // down 

     console.log('down'); 
     break; 

    case 38: // up 

     console.log('up'); 
     break; 

    } 
} 
}); 
$(window).on('scroll',function(){ 
    if($(window).scrollTop() + $(window).height() == $(document).height()) { 
     //user is at the bottom of page 
     endOfPage = true; 
    } 
}); 

// keyup handler 
$(document).keyup(function(e){ 
    endOfPage = false; 
}); 
+0

當用戶從不提起下鍵時會發生什麼?如果他們一直保持按下狀態,那麼沒有按鍵事件,因此無法阻止用戶在頁面底部發送向下鍵。還是我錯讀? – victoroux

+0

是的,但是你忘記了我已經做了另一個控制,所以當他在頁面末尾時變量將變爲true,並且如果變量爲false,那麼當你進行控制時,你會讓他滾動。閱讀我的代碼中的評論 –

+0

你應該把你的代碼放在我已經做好console.log('down'); –