使用JQuery UI滑块“更改”事件问题

时间:2013-05-03 19:03:49

标签: javascript jquery jquery-ui jquery-ui-slider

我有一个使用JQuery UI构建的滑块功能。它应该表现得像这样:

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

这里有一个工作示例:http://jsfiddle.net/e2rym/

我注意到两个问题,这两个问题都发生在相同条件下:用户使用鼠标和键盘在5秒钟结束时调整幻灯片上的手柄位置。人们可以通过连续快速地点击幻灯片来模拟这一点,同时在每个回合结束时同时按下左键和/或右键

如果你这样做,将会发生以下两种情况之一(不是每次都会发生,但经过几次尝试后仍然可以重现):

  1. 手柄将卡在您单击的最后位置,而不是重置为最小和隐藏。看起来如果你连续点击或移动键足够快,那么change事件将在重置动作(即禁用滑块,移动手柄和隐藏)之后触发

  2. 更糟糕的是,有时滑块会被禁用,手柄会被隐藏,但在接下来的5秒钟内,无论你是什么,没有change事件都会被触发在幻灯片上执行,即单击鼠标或按左/右键根本不会定位手柄。因此,滑块在随后的所有时段都变得完全无法使用。我觉得这与在重置操作发生的同时触发两个change事件(一个通过单击鼠标,另一个通过按左/右键)的可能性有关。

  3. 不知道为什么会出现这些问题以及如何解决这些问题,我们将不胜感激。

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

1 个答案:

答案 0 :(得分:1)

我很遗憾无法解释这个问题,但我确实设法通过将change事件更改为start事件(我认为如果您专门使用该事件将无效)其他事件change事件。)