在 nouislider 上突出显示 pips/scale

Highlighting pips/scale on nouislider

我正在使用 nouislider 库构建六个滑块。

我在滑块上添加了点数。我想突出显示相关滑块打开的点值,并在滑块移动时进行相应更新。

我已经创建了一个 jsFiddle 我目前所做的。

HTML:

<div class="sliders" id="slider1"></div>
<br/>
<div class="sliders" id="slider2"></div>
<br/>
<div class="sliders" id="slider3"></div>
<br/>
<div class="sliders" id="slider4"></div>
<br/>
<div class="sliders" id="slider5"></div>
<br/>
<div class="sliders" id="slider6"></div>

JS:

var sliders = document.getElementsByClassName('sliders');

for (var i = 0; i < sliders.length; i++) {

    noUiSlider.create(sliders[i], {
        start: 0,
        step: 1,
        connect: "lower",
        orientation: "horizontal",
        range: {
            'min': 0,
            'max': 5
        },
        pips: {
            mode: 'values',
            values: [0, 1, 2, 3, 4, 5],
            density: 100
        }
    });
}

有关如何完成此操作的任何帮助。

我对 noUiSlider 不是很熟悉,但这是我从他们在 documentation 的更新活动中收集的一些东西。您可以使用更改,但我喜欢最初的突出显示。请记住,此方法仅适用于您的值等同于显示的元素索引。如果您从 1 或任何其他值开始,则需要找到一种不同的方法来定位 .noUi-value.

/* Loop Through Sliders */
$('.sliders').each(function() {
    /* Variable Defaults */
    var slider = this;
    
    /* Init noUiSlider */
    noUiSlider.create(slider, {
        start: 0,
        step: 1,
        connect: "lower",
        orientation: "horizontal",
        range: {
            'min': 0,
            'max': 5
        },
        pips: {
            mode: 'values',
            values: [0, 1, 2, 3, 4, 5],
            density: 100
        }
    });

    /* Bind Update Event to noUiSlider */
    slider.noUiSlider.on('update', function(values) {
        /* Set Maximum Position */
        var maxPos = Math.max(values);
        
        /* Add Highlight Class to Pip */
        $(slider).find('.noUi-value:visible').removeClass('highlight').eq(maxPos).addClass('highlight');
    });
});
.sliders {
 margin-top: 40px;
}

.noUi-pips-horizontal:last-child .noUi-marker-large, .noUi-marker-sub {
 display: none;
}

.noUi-pips-horizontal {
 top: -55px !important;
}

/* Highlight CSS */
.noUi-value.highlight {
 color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/10.1.0/nouislider.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/10.1.0/nouislider.min.css" rel="stylesheet"/>
<div class="sliders" id="slider1"></div>
<br>
<div class="sliders" id="slider2"></div>
<br>
<div class="sliders" id="slider3"></div>
<br>
<div class="sliders" id="slider4"></div>
<br>
<div class="sliders" id="slider5"></div>
<br>
<div class="sliders" id="slider6"></div>