2011-12-26 1 views
1

私は毎回のdivをスクロールするscrollLeft機能が欲しいscrollLeft関数が最初のクリックでのみ機能するのはなぜですか?私は前方のボタンをクリックしたときに

コード:

$("#nextbutton").click(
    function() 
    { 
    $("#thumbholder").scrollLeft(300); 
}); 

Thumbholderは私がスクロールして隠されたアイテムを表示したい、画像とそのoverflow:hiddenを保持しています左。

#thumbholder 
{ 
height:30%; 
width:90%; 
overflow: hidden; 
white-space:nowrap; 
margin:2% auto; 
} 

誰がどのようにそれぞれのscrollLeft機能は「#nextbutton」をクリックして繰り返すように、だけでなく、初めての私はそれをクリックして教えてもらえますか?

+0

をあなたが本当に繰り返しによって何を意味しています:

は、既存の位置を取得し、それから300を減算し、すでに使用している.scrollButton(value)機能を使用して、それをバックに適用する.scrollLeft()を使用してみてください? #thumbholderをクリックするたびに – gideon

+0

を左にスクロールしてください。 –

+0

@ismailvittal:明確にするために質問を編集しました。あなたの質問のポイントを逃した場合は、私の変更をロールバックし、さらに編集して内容をクリアしてください。 –

答えて

3

問題は、scrollLeftが相対スクロールバーの位置をとるという問題です。

the docs for scrollLeftを参照してください。

http://jsfiddle.net/RjWKp/

$("#leftButton").click(
    function() { 
     var thumbHolder = $("#thumbholder"); 
     thumbHolder.scrollLeft(thumbHolder.scrollLeft() - 300); 
    } 
); 
+0

これにキープレスイベントを追加するにはどうすればよいですか?左矢印と右矢印を押すと同じ機能が動作するはずです。 –

+0

@ismailvittal:これは別の質問ですが、['.keydown()'関数(http://api.jquery.com/keydown/)を見て '$(window)'に適用してみてください。 。 '.keypress'関数は、特殊キーではなく、文字キーのみを扱うため、機能しません。あなたの '.keydown'ハンドラで既存の' $( "#leftButton").Click(); 'と' $( "#leftButton")。 –

+0

私はそれを試してみました。 –

0

$("#thumbholder")[0].scrollBy(-10, 0);を使用します。最初のパラメータは水平方向にスクロールするピクセル数です(負の値は左にスクロールし、正の値は右にスクロールします)。2番目のパラメータは垂直方向にスクロールするピクセル数です。上記の呼び出しで'10 'を必要に応じて変更することができます

+0

この 'scrollBy'関数はどこに宣言されていますか?私はjQueryのドキュメントでそれを見ることはできませんでした。jsFiddleで試してみるとうまくいかないようでした。http://jsfiddle.net/RjWKp/2/ –

+0

'scrollBy()'はDOM関数です。 jQuery関数ではありません。これは、DOM要素のために利用可能で、 '$("#thumbholder ")[0]'(最後に '[0]'に気付くと、DOMオブジェクトを提供します) – techfoobar

+0

ドキュメンテーション: http://www.w3schools.com/jsref/met_win_scrollby.asp – techfoobar

関連する問題