问题描述
我在页面上有一个基于jquery的滑块。 此滑块会在每次值更改时调用一个函数来更新变量,并执行其他一些操作。 这意味着在拖动滑块手柄时,该函??数调用太频繁。 这会导致性能问题。
当前伪指令:
Slider.onSlide: trigger function ValueChange(V)
function ValueChange(V) {Variable=V; other code;};
我只想更改自最后一次更改以来已过去的毫秒数(300)的值。 这将大大提高性能。
此处的目的是减少滑动时触发ValueChange(V)的次数。 这里只有时间延迟是行不通的,这一点很重要;
即使最后一个滑动位置在X秒数内,也始终设置滑块的最后一个值。 (尽管可以在X秒后而不是立即设置)
该值将更改为最新的滑块位置值,而不是X之前的秒数的滑块位置值。
我认为如果上述两项检查均通过,则需要一个中间函数,然后调用ValueChange(V)。
我希望这是有道理的……真的需要帮助……对于我欠发达的大脑来说,它太复杂了……真的! :D
在此先感谢,诺曼。
PS:由于我有可用的库,因此也欢迎使用jQuery解决方案。
1楼
Guffa
1
已采纳
2010-07-03 23:27:01
每次更改时,将值存储在变量中,并使用以一定间隔运行的函数来检查值是否已更改:
var currentValue, lastValue;
function ValueChange(V) {
currentValue = V;
};
window.setInterval(function(){
if (lastValue != currentValue) {
lastValue = currentValue;
Variable = currentValue; other code;
}
}, 50);
我选择了50毫秒的间隔。 因为这是动画的合理间隔。 您可以尝试使用300毫秒的间隔,但是每秒只会更新3次,这看起来可能有些生涩。