Вы используете .amount
как класс каждый раз для элемента <input />
. Поскольку классы обычно не уникальны, он принимает все <input />
элементы с этим классом и изменяет его значение. Поэтому вы должны указать, что он должен искать диапазон с классом amount INSIDE вашего текущего контейнера (используйте метод .find()
. (Или вы можете использовать уникальный идентификатор для каждый слайдер.)
Так что, если вы хотите использовать один и тот же HTML снова и снова, вы можете просто сделать:
$(document).ready(function() {
$(".slider").each(function() {
// $this is a reference to .slider in current iteration of each
$this = $(this);
// find any .slider-range element WITHIN scope of $this
$(".slider-range", $this).slider({
range: true,
min: 0,
max: 100,
values: [ 30, 60 ],
slide: function( event, ui ) {
// find any element with class .amount WITHIN scope of $this
$(this).parent().find(".amount").html( "$" + ui.values[ 0 ] + " - $" + ui.values[ 1 ]);
}
});
$(".amount").html( "$" + $(".slider-range").slider("values", 0 ) + " - $" + $(".slider-range").slider("values", 1 ));
});
});
Таким образом, вы также должны изменить свой HTML и добавить диапазон:
<div class="slider">
<b>Price range:</b>
<span class="amount">0</span>
<div class="slider-range"></div>
</div>
<div class="slider">
<b>Amount range:</b>
<span class="amount">0</span>
<div class="slider-range"></div>
</div>
Обратите внимание, что я изменил val()
на html()
в вашем скрипте JQuery, чтобы заполнить содержимое диапазона. Вы можете прочитать больше о html()
функциональности здесь .
Полный рабочий пример этого кода можно найти здесь, на JSFiddle . Это должно решить вашу проблему!