2012-02-03 6 views
1

マウスボタンをクリックして保持したときにdivをスクロールさせるためのボタンがあります。私はこれがうまくいくはずだと思ったが、マウスアップイベントまでスクロールするのとは反対に、1回のクリックにつき1つのpxだけスクロールする。マウスのスクロール機能が動作しない

コード:

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

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

    }); 
+0

? – Paul

+0

スクロールするのに十分なコンテンツがない可能性があります。それに気づいた? – ShankarSangoli

+0

@Paulボタンdivの上にマウスを置いたまま、あるdivの内容をスクロールさせようとしています。 –

答えて

1

ような何かを試みることができる、それが発火するという意味ではありませんそのイベントは継続的に、一度だけ発火します。スクロールを増やすことができるものsetIntervalを使用してmousedownイベントトリガーを一度開始し、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

私はそれが好きです、私は自分自身で長い同じ行に行っていたが、より単純な何かがあるかもしれないと思った。ありがとう。 –

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

関連する問題