2012-09-13 31 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