2012-09-13 58 views
0

所以我正在製作自定義選擇框,我需要一種方法來編程檢測幾個框中的哪一個正在滾動。哪個元素正在滾動?

我想模仿<當尺寸大於1時選擇>功能。也就是說,如果你點擊[up:38]或[down:40]在列表中選擇適當的項目。

我撥弄我與http://jsfiddle.net/GtA8v/52/

現在的工作,因爲該事件被貼在身上,我怎麼知道是哪個「.wrap」元素都被滾動(他們滾動,所以希望之前,我可以如果需要,實際上停止事件)?

編輯:我更新了Jfiddle,如果你看我只是有一個'包裹'正在滾動的位置持有人,一旦我可以找出哪個'包裹接收事件它會按我的預期工作。

+1

作爲一個側面說明:我注意到,當你點擊它們的箭頭去向上和向下滾動條你不滾動內容。爲了解決這個問題,在'.wrap'風格中添加了一個'line-height'設置。與此類似:'.wrap {height:5em; line-height:1em;溢出-Y:滾動; }' – Nope

+0

@Francois Wahl,這真的很接近我要找的東西。我希望[down40]將「selected」類添加到下一個元素,並將其從當前元素中移除。 – MrBrightside

回答

0

UUUUUGGGGGLLLLLYYY但它的作品,我記下當一個包裹元素集中,然後當selectNext()函數被調用我只是引用。我會暫時將它作爲不被接受的答案,看看是否有人知道如何通過查看事件對象來確定這一點,但這是一個有效的解決方案。

http://jsfiddle.net/GtA8v/66/

1

您可以簡單地使用scroll事件來確定哪些元素正在滾動。例如:

$('.wrap').scroll(function() { 
    console.log($(this)); 
}); 

DEMO

+0

在這一點上停止滾動還爲時不晚?我怎麼知道在這一點上按[上]還是[下]? – MrBrightside

+0

我真的在尋找滾動前的按鍵事件。附在身體上。 – MrBrightside

+2

@CynicalOptimist如果用戶使用鼠標滾輪而不是上下鍵滾動,該怎麼辦? jQuery插件的路標可能會讓你感興趣:http://imakewebthings.com/jquery-waypoints/#examples例如'someElements.waypoint(function(event,direction){if(direction ==='down'){// do something}});' – TK123