2012-02-03 36 views
1

我有一個按鈕,當鼠標按鈕被點擊並按住它時,它可以向下滾動div。我認爲這應該工作,但它只滾動一個PX每點擊反對滾動,直到鼠標事件。Mousedown滾動功能不起作用

代碼:

var howfar = 0; 
    $('#scrolldown').mousedown(function() { 

     howfar ++; 
     $('#scrollbox').scrollTop(howfar); 

    }); 
+0

什麼是你想在這裏完成了嗎? – Paul 2012-02-03 19:49:43

+0

可能沒有足夠的內容滾動。你注意到了嗎? – ShankarSangoli 2012-02-03 19:50:27

+0

@Paul我試圖讓一個div的內容滾動,而鼠標停在我的按鈕div上。 – 2012-02-03 19:54:04

回答

1

保持mousedown汽車無並不意味着它會火該事件不斷,它只會觸發一次。你可以做什麼開始增加scrollTop一次mousedown事件觸發器使用setInterval然後清除mouseup事件的間隔。

嘗試類似這樣的東西。

var howfar = 0; 
var timer; 
$('#scrolldown').mousedown(function() { 
    var innerHeight = $('#scrollbox').css('height', 'auto').height(); 
    $('#scrollbox').css('height', '100px'); 
    timer = setInterval(function(){ 
     if(howfar < innerHeight){ 
      $('#scrollbox').scrollTop(howfar++); 
     } 
     else{//Clear the interval 
      clearInterval(timer); 
     } 
    }, 10); 
}); 
$('#scrolldown').mouseup(function() { 
    clearInterval(timer); 
}); 

Demo

+0

我確實喜歡這樣,我自己也一樣,但認爲可能有些簡單。謝謝 。 – 2012-02-03 20:02:35

3

我認爲這是你在找什麼:

var shouldScrool = false 
    takeAction, 
    count = 0; 

takeAction = function() { 
    count = 0; 
    while(takeAction) { 
     count++; 
     $('#scrollbox').scrollTop(count); 
    } 
}; 
$('#scrolldown').mousedown(function() { 
    takeAction = true; 
    takeAction(); 
}); 

$('#scrolldown').mouseup(function() { 
    takeAction = false; 
}); 
+0

我擔心在這裏使用'while'循環將導致所有內容都被鎖定。 – Fosco 2012-02-03 19:57:09