【问题标题】:Multiple jQuery UI Range Sliders Interacting多个 jQuery UI 范围滑块交互
【发布时间】:2012-12-29 20:44:52
【问题描述】:

我正在使用 jQuery UI 创建三个独立的范围滑块。但是,由于某种原因,当移动滑块上的手柄时,另一个手柄将跳转到最后修改的滑块上相应手柄的位置(参见下面的 gif)。我真的很想停下来,让滑块完全独立。

目前我只在 Chrome 中测试过。

Here's a JSFiddle that demonstrates the issue。下面是相关代码:

HTML

<ul id="sliders">
    <li id="red">
        <div class="slider"></div>
    </li>
    <li id="green">
        <div class="slider"></div>
    </li>
    <li id="blue">
        <div class="slider"></div>
    </li>
</ul>​

Javascript

$( "#sliders .slider" ).slider({
    range: true,
    orientation: "horizontal",
    min: 0,
    max: 255,
    values: [ 0, 255 ],
    slide: function( event, ui ) {
        $(this).parent().children(".range").text(ui.values[ 0 ] + " - " + ui.values[ 1 ]);
    }
});

【问题讨论】:

  • 也发生在 Firefox 中,但不是每次都发生。可能会尝试使用几个旧版本的 jQueryUI 来查看它是否是一个错误。可以从谷歌 CDN 获取它们

标签: javascript jquery jquery-ui jquery-ui-slider


【解决方案1】:

您需要将.slider() 小部件应用于每个项目,而不是项目集合。

$( "#sliders .slider" ).each(function(){
    $(this).slider({
        range: true,
        orientation: "horizontal",
        min: 0,
        max: 255,
        values: [ 0, 255 ],
        slide: function( event, ui ) {
            $(this).prev(".range").text(ui.values[ 0 ] + " - " + ui.values[ 1 ]);
        }
    });
});

另请注意,您可以使用.prev() 代替.parent().children()

【讨论】:

【解决方案2】:

请尝试对您的代码进行此修改:

$("#sliders .slider").each(function() {
    $(this).slider({
        range : true,
        orientation : "horizontal",
        min : 0,
        max : 255,
        values : [0, 255],
        orientation : "horizontal",
        slide : function(event, ui) {
            $(this).parent().children(".range").text(ui.values[0] + " - " + ui.values[1]);
        }
    });
}); ​

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 2020-09-13
    相关资源
    最近更新 更多