jQuery UI Slider - handle 动画和滚动内容不同步

标签 jquery user-interface slider jquery-animate synchronization

我在为我的目的定制 jQuery UI Slider 时遇到了麻烦。

加载时 slider 及其内容应自动动画到某个位置。理想情况下,只要用户不将鼠标悬停在滚动内容或 slider 上,它就应该向右移动,然后停止,然后以循环方式返回(作为循环)。

按照我的默认 slider 设置 ( http://jsfiddle.net/mayko/j6WuE/1/ ):

var scrollbar = $("#slider").slider({
    animate: 3000,
    min: 0,
    max: $("#timeline_content .items").width(),
    change: handleSlider,
    slide: handleSlider
}); 
function handleSlider(e, ui) {
    $("#timeline_content").stop().animate({scrollLeft: ui.value}, scrollbar.slider("option", "animate"));
}

如果我现在尝试设置这样的值:

$('#slider').slider({'value': 1000});

滚动内容的动画效果很好,但 handle 只是跳转到新位置。

即使我单击 slider 轨道本身,滚动内容和 slider handle 的动画也不同步。

有人有解决办法吗?

最佳答案

“动画”选项仅适用于滚动条上的单击。动画不会像您那样通过手动设置值来触发。

为了使 slider 移动,您必须模拟用户输入(例如:触发 slider 上的单击),或者使用增量值设置来伪造它。

不幸的是, slider 似乎对 slider 区域做了一些奇怪的事情,我无法在那里触发点击;您可以尝试假装单击并拖动 slider 吗?

因此替代方案是重复设置 slider 的值,但看起来很糟糕。

function advanceSlider(next){
    scrollbar.slider('value',next)
        if(next<1050)
            setTimeout(function() { advanceSlider(next+50) },150);
}
advanceSlider(1);

抱歉,jsFiddle

关于jQuery UI Slider - handle 动画和滚动内容不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8205045/

相关文章:

javascript - 如何使 Slick slider 不那么不稳定并在所有宽度下工作?

javascript - 如何在 php 中创建电子商务网站相关产品 slider

javascript - 哪个更快 :active pseudo or add a class

javascript - 在带有事件 a 的简单显示/隐藏内容菜单中显示第一个

javascript - jQuery UI 标签 - 如何获取当前选中的标签索引

c++ - Qt C++ simple app 初学者问题

java - 更改 JTabbedPane 标题的大小

php - 使用 js 文件名调用 javascript 函数

C++ OpenGL 窗口工具包

javascript - 简单的 js slider ,读取 ofssetX 使处理程序跳跃