2013-05-03 84 views
1

我有使用JQuery UI构建的滑块功能。它应该表现如下:使用JQuery UI滑块“更改”事件问题

滑块被激活/停用20次。每转都是5秒钟的时间,在此期间滑块保持禁用状态的前2秒,滑块手柄处于隐藏状态。之后,用户可以使用鼠标单击滑块上的任意位置以放置句柄并选择一个值。点击后,用户也可以使用左/右箭头键来调整手柄。在5秒钟结束时,发生三件事:1.滑块被禁用; 2.手柄重置为最小值; 3.手柄处于隐藏状态。然后在下一个回合重新开始之前有1秒的超时时间。

工作示例是在这里:http://jsfiddle.net/e2rym/

我已经注意到了两个问题,这两个相同的条件下发生的:用户使用鼠标和键盘在5月底调整幻灯片上的手柄位置-第二阶段。我们可以连续快速地模拟点击幻灯片,同时在每回合结束时按左和/或右键同时

如果你这样做,对两件事情会发生(不是几次尝试后,每一次,但绝对可重复):

  1. 手柄将卡住你点击,而最后的位置比被重置为最小和隐藏。看起来如果你点击或移动按键的速度不够快,那么change事件将在之后触发发生重置操作(即滑块被禁用,移动和隐藏手柄)。

  2. 更糟糕的是,有时候滑块将被禁用,手柄会被隐藏,但在以下5秒的时间,没有change事件将永远不会不管你做什么,在幻灯片,即开除点击鼠标或按左/右键不能定位手柄。因此,滑块在随后的所有时段都完全无法使用。我认为这与在重置动作发生时同时触发两个事件(一个是通过点击鼠标,另一个是通过按左/右键)相关。

任何想法为什么会发生这些问题,以及如何解决它们将不胜感激。

P.S.我已经尝试过JQuery UI和JQuery的多个版本,但问题仍然存在。

+0

这应该是某种游戏?如果是这样,jQuery的[gameQuery](http://gamequeryjs.com/)具有“非特定线程”并可能有助于解决这些问题。在我看来,你要依靠定时器来创建“feux-threads”,但是要做到这一点还需要做很多事情。只是注意到有一个额外的库已经做到了这一点(以及一些其他你可能不需要的东西,但它并不是很大) – SpYk3HH 2013-05-03 19:14:52

+0

@ SpYk3HH,它不是一个游戏,而是由用户指定的一些自定义交互。感谢您提供关于'gameQuery'的建议,但是我觉得仅仅为了这个滑块功能,这有点矫枉过正。 – skyork 2013-05-03 19:28:55

回答

1

我遗憾的是无法解释的问题,但我还是设法使其通过更改change事件的start事件(我想,如果你是专门用别的东西change事件将无法正常工作)消失。

+0

它似乎使用'stop'事件至少可以防止第二个(也是更严重的)问题。 – skyork 2013-05-03 21:14:33