jQueryUI中的滑块有bug吗?

jQueryUI中的滑块有bug吗?,jquery,jquery-ui,slider,Jquery,Jquery Ui,Slider,ui插件中的jquery滑块似乎可以正常工作,直到您特别快地移动手柄 下面是一个演示: 正常移动滑块以获得预期的结果,然后尽可能快地来回移动滑块,滑块将断开。在演示中移动足够快,所有内容都会消失 我们怎样才能绕过这个问题?这是完全不可避免的吗? 我不会说这本身就是一个bug——更像是一个限制。这个问题基本上是关于滑块的长度,你可以在上面安装/注册多少步,以及你的鼠标移动如何被捕获和取整 想象一下,一个300像素宽的滑块上有546个数据点——拖动鼠标无法捕捉滑块上的每个点。在您的情况下,如果您在

ui插件中的jquery滑块似乎可以正常工作,直到您特别快地移动手柄

下面是一个演示:

正常移动滑块以获得预期的结果,然后尽可能快地来回移动滑块,滑块将断开。在演示中移动足够快,所有内容都会消失

我们怎样才能绕过这个问题?这是完全不可避免的吗?

我不会说这本身就是一个bug——更像是一个限制。这个问题基本上是关于滑块的长度,你可以在上面安装/注册多少步,以及你的鼠标移动如何被捕获和取整

想象一下,一个300像素宽的滑块上有546个数据点——拖动鼠标无法捕捉滑块上的每个点。在您的情况下,如果您在700px上拟合12个点,并使用鼠标协调来捕捉这些点,那么您一定会在某个点上偶然发现近似值

如果你真的需要一个案例,你必须在路上注册每一步-我建议在屏幕上放置一个控制计数器,检查鼠标移动是否对范围内的每一步都有效,否则-使用js触发缺失的步骤

从您的演示和我想象中的300px宽滑块制作了一个示例,以演示处理此限制的一种方法(它还跳过第1行以适合您的示例)

。。。
幻灯片:功能(事件、用户界面){
如果(!counter)计数器=$(此).slider(“选项”、“值”);
var step=$(this).slider(“选项”、“步骤”);
if(数学abs(ui值计数器)>步骤){
if(ui.value>counter)for(var i=counter+1;iui.value;i--)removerow();
}否则{
如果(ui.value>计数器)添加行(ui.value);
如果(ui.value
我不会说这本身就是一个bug——更像是一个限制。这个问题基本上是关于滑块的长度,你可以在上面安装/注册多少步,以及你的鼠标移动如何被捕获和取整

想象一下,一个300像素宽的滑块上有546个数据点——拖动鼠标无法捕捉滑块上的每个点。在您的情况下,如果您在700px上拟合12个点,并使用鼠标协调来捕捉这些点,那么您一定会在某个点上偶然发现近似值

如果你真的需要一个案例,你必须在路上注册每一步-我建议在屏幕上放置一个控制计数器,检查鼠标移动是否对范围内的每一步都有效,否则-使用js触发缺失的步骤

从您的演示和我想象中的300px宽滑块制作了一个示例,以演示处理此限制的一种方法(它还跳过第1行以适合您的示例)

。。。
幻灯片:功能(事件、用户界面){
如果(!counter)计数器=$(此).slider(“选项”、“值”);
var step=$(this).slider(“选项”、“步骤”);
if(数学abs(ui值计数器)>步骤){
if(ui.value>counter)for(var i=counter+1;iui.value;i--)removerow();
}否则{
如果(ui.value>计数器)添加行(ui.value);
如果(ui.value
...
slide: function (event, ui) {
    if(!counter) counter=$(this).slider( "option", "value" );
    var step=$(this).slider( "option", "step" );
    if(Math.abs(ui.value-counter)>step){
        if(ui.value > counter) for (var i=counter+1;i<=ui.value;i++) addrow(i);
        else if(ui.value < counter) for (var i=counter;i>ui.value;i--) removerow();
    }else{
        if (ui.value > counter) addrow(ui.value);
        else if (ui.value < counter) removerow();                
    }
    counter = ui.value;
}
...