2013-10-13 27 views
1

從插件的jQuery滑塊似乎工作正常,直到你移動手柄特別快。jquery ui中的滑塊是否有bug?

這裏有一個演示: http://jsfiddle.net/5aXba/5/

正常移動滑塊的預期結果,然後以最快的速度,你可以來回移動它,它打破。在演示中足夠快地移動它,所有內容都會消失。

我們該如何解決這個問題?這完全是不可避免的?

回答

1

我不會說這是一個錯誤本身 - 更像是一個限制。問題基本上是關於滑塊的長度是多少,您可以在其上適合/註冊多少個步驟,以及如何捕獲和舍入鼠標移動。

想象一下300px寬的滑塊,上面有546個數據點 - 沒有辦法通過拖動鼠標來捕捉該滑塊上的每個點。在你的情況下,如果你在700px上適合12點並且使用鼠標協調來捕捉這些點,那麼你肯定會在某個點上偶然發現一個近似值。

如果你真的需要的情況下,你必須註冊自己的方式每一個步驟 - 我建議把控制計數器在slide() method,並檢查鼠標移動計數的範圍,否則每一個步驟 - 火js缺少的步驟。

從您的演示和我的想象中的300px寬滑塊中製作了一個jsFiddle example,以演示處理此限制的一種方法(它也跳過行#1以適合您的示例)。

... 
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; 
} 
...