2011-12-26 69 views
1

我想scrollLeft功能每次滾動一個div當我點擊前進按鈕爲什麼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

你到底由重複的意思? – gideon 2011-12-26 07:16:24

+0

每次點擊#thumbholder時應滾動到左側 – 2011-12-26 07:17:22

+0

@ismailvittal:我已編輯了該問題以進行說明。如果我錯過了您的問題的重點,請隨時回滾我的更改,並進行進一步修改以清除問題。 – 2011-12-26 07:39:24

回答

3

的問題是,scrollLeft需要一個絕對位置滾動條,而不是相對一個可以在上面的調用改變「10」。

the docs for scrollLeft

嘗試使用.scrollLeft()讓現有的位置,從中減去300,並使用你已經使用.scrollButton(value)功能應用於回:

http://jsfiddle.net/RjWKp/

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

如何將按鍵事件添加到此?同時按左箭頭和右箭頭相同的功能應該工作。 – 2011-12-26 09:19:26

+0

@ismailvittal:這是一個單獨的問題,但您應該查看[.keydown()函數](http://api.jquery.com/keydown/),並嘗試將其應用於'$(window)' 。 '.keypress'函數不起作用,因爲它只處理字符鍵,而不是特殊鍵。在你的'.keydown'處理函數中,你可以簡單地觸發你現有的'$(「#leftButton」)。click();''和$(「#leftButton」)。 – 2011-12-27 03:27:36

+0

我試過了,它解決了。 – 2011-12-27 04:15:39

0

使用$("#thumbholder")[0].scrollBy(-10, 0);其中第一個參數是水平滾動的像素數(負值將向左滾動,正值將向右滾動),第二個參數是垂直滾動的像素數。根據需要

+0

這個'scrollBy'函數在哪裏聲明?我沒有看到它在jQuery的文檔,它似乎沒有工作的時候我的jsfiddle試了一下:http://jsfiddle.net/RjWKp/2/ – 2011-12-26 07:35:59

+0

'scrollBy()'是一個DOM功能。不是一個jQuery函數。它適用於DOM元素,這就是爲什麼我們用'$(「#thumbholder」)稱之爲[0]'(注意'[0]'結尾,它爲我們提供底層DOM對象) – techfoobar 2011-12-26 07:37:29

+0

繼承人的文檔: http://www.w3schools.com/jsref/met_win_scrollby.asp – techfoobar 2011-12-26 07:39:08

相關問題