我有一个jQuery UI滑块,当用户触发滑动功能时,我需要将当前幻灯片值推送到数组中。问题是,当用户滑动手柄太快时,数组的长度和当前索引值不同步。好像数组不能像用户滑动那样快速更新...
有解决方法吗?
感谢。
$( "#slider" ).slider({
max: gCoordsArray.length,
min: 0,
step: 1,
slide: function(event, ui){
var direction = '';
// test whether we are sliding left or right ( increasing / decreasing increment )
if (ui.value > count) direction = 'right';
if (ui.value < count) direction = 'left';
count = ui.value;
if (direction == 'right') {
test.push(count);
console.log(test.length); // Should match count
console.log(count); // Should match length
}
if (direction === 'left') {
test.pop();
console.log(test.length); // Should match count
console.log(count); // Should match length
}
}, 1)
});
答案 0 :(得分:1)
test.length
和count=ui.value
不会相同。
slide event返回当前鼠标位置,如果用户直接跳到最后,ui.value
将gCoordsArray.length
test.length == 0
一种解决方案可能是在“全局”var(事件处理程序之外)中记录前一个位置并进行比较,例如:
var prevPosition = 0;
$( "#slider" ).slider({
max: gCoordsArray.length,
min: 0,
step: 1,
slide: function(event, ui) {
var thisPosition = ui.value;
if (thisPosition > prevPosition) direction = 'right';
if (thisPosition < prevPosition) direction = 'left';
if (direction == 'right')
{
while (prevPosition != thisPosition)
{
prevPosition++;
test.push(prevPosition);
}
}
... equivalent for left
}, 1)
});