【问题标题】:JQuery slider: lag adding a label next to the handleJQuery滑块:滞后在句柄旁边添加标签
【发布时间】:2012-11-13 13:26:19
【问题描述】:

我有一个与this StackOverflow question 类似的设计目标,即在用户拖动滑块时向 JQuery 滑块添加标签,以显示滑块的当前值。我对这些答案的问题是slide 事件在滑块即将移动到新位置时触发,并提供具有新值的ui 对象。很好,但我能找到的唯一位置滑块是旧位置,而不是新位置。如果滑块上有足够的步数,这并不是很明显,但是如果我减少步数,您会看到标签出现在滑动手柄曾经所在的位置旁边。

我已经更新了另一个问题的 jsFiddle 来说明问题:http://jsfiddle.net/mcuf6/2/

那么,tl;dr:如何通过在滑动事件期间获取滑块句柄的最终位置来避免在用户拖动句柄时绘制滑块标签时出现延迟?

【问题讨论】:

    标签: javascript jquery jquery-ui


    【解决方案1】:

    编辑: 这个小技巧应该完全满足您的需要

    $(document).ready(function() {
        $("#slider").slider({
            value:0,
            min: 0,
            max: 5,
            step: 1,
            range: 'min',
            slide: function( event, ui ) {
                var that = $(this);
                setTimeout(function() {
                var offsetLeft = that.find(".ui-slider-handle").offset().left;
                $( "#sliderValue" )
                    .val( ui.value )
                    .css({
                        "position": "absolute",
                        "left": offsetLeft
                    });
            },1);
            }
        });
    });​
    

    http://jsfiddle.net/mcuf6/6/

    【讨论】:

    • 是的,我知道我可以在更改完成后更新滑块,但我想要达到的设计目标是显示用户 before 的值决定在哪里释放拖动动作。
    • 我已经编辑了我的原始答案以满足您的需求。如有疑问 - 使用超时 ;)
    • 那是……非常狡猾!谢谢
    猜你喜欢
    • 2011-02-06
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    相关资源
    最近更新 更多