【问题标题】:'change' event problems with JQuery UI sliderJQuery UI 滑块的“更改”事件问题
【发布时间】:2013-05-03 19:03:48
【问题描述】:

我有一个使用 JQuery UI 构建的滑块功能。它的行为应该是这样的:

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

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

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

如果您这样做,将会发生以下两种情况之一(并非每次都发生,但经过几次尝试后肯定可以重现):

  1. 手柄将卡在您最后一次单击的位置,而不是重置为最小值并隐藏。似乎如果您连续且足够快地单击或移动键,那么change 事件将在重置操作(即滑块禁用、手柄移动和隐藏)发生后触发。

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

    李>

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

附:我尝试了多个版本的 JQuery UI 和 JQuery,但问题仍然存在。

【问题讨论】:

  • 这应该是某种游戏吗?如果是这样,jQuery 的gameQuery 具有“feux-threading”,可能有助于解决这些问题。在我看来,您依赖计时器来创建“feux-threads”,但是要做到这一点需要做很多事情。只是注意到有一个额外的库已经这样做了(还有一堆你可能不需要的其他东西,但它并不庞大)
  • @SpYk3HH,它不是一个游戏,而是一些用户指定的自定义交互。感谢gameQuery 的建议,但我觉得仅就这个滑块功能来说有点矫枉过正。

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


【解决方案1】:

很遗憾,我无法解释这个问题,但我确实设法通过将您的 change 事件更改为 start 事件来解决这个问题(如果您专门使用 change 事件,我想这将不起作用别的)。

【讨论】:

  • 似乎使用stop 事件至少可以防止第二个(也是更严重的)问题。
猜你喜欢
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-24
  • 1970-01-01
  • 2012-08-27
相关资源
最近更新 更多