從插件的jQuery滑塊似乎工作正常,直到你移動手柄特別快。jquery ui中的滑塊是否有bug?
這裏有一個演示: http://jsfiddle.net/5aXba/5/
正常移動滑塊的預期結果,然後以最快的速度,你可以來回移動它,它打破。在演示中足夠快地移動它,所有內容都會消失。
我們該如何解決這個問題?這完全是不可避免的?
從插件的jQuery滑塊似乎工作正常,直到你移動手柄特別快。jquery ui中的滑塊是否有bug?
這裏有一個演示: http://jsfiddle.net/5aXba/5/
正常移動滑塊的預期結果,然後以最快的速度,你可以來回移動它,它打破。在演示中足夠快地移動它,所有內容都會消失。
我們該如何解決這個問題?這完全是不可避免的?
我不會說這是一個錯誤本身 - 更像是一個限制。問題基本上是關於滑塊的長度是多少,您可以在其上適合/註冊多少個步驟,以及如何捕獲和舍入鼠標移動。
想象一下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;
}
...