Я знаю, что это старый вопрос, но я столкнулся с той же проблемой и нашел более простой способ справиться с этим. По сути, вам нужно отключить события указателя на самом слайдере, включить их на маркерах, а затем прикрепить событие «click» к элементу контейнера, который вручную перемещает ваш слайдер. Вот шаги:
Примите этот HTML:
<div class="container-outer">
<div class="container-inner">
<div class="jquerySlider">
</div>
</div>
</div>
CSS хотел бы это:
.container-inner {
pointer-events: none;
}
.container-inner .ui-slider .ui-slider-handle {
pointer-events: auto;
}
Ваш javascript будет выглядеть так:
'click .container-outer': function(event) {
event.preventDefault();
var clickPosition = event.offsetX;
var clickPercentage = event.offsetX / event.currentTarget.offsetWidth;
var sliderMax = $('.jquerySlider').slider("option","max");
var newPosition = sliderMax * clickPercentage;
$('.jquerySlider').("values",1,newPosition);
}
Достоинством является то, что вы избегаете возиться с кодом jquery. Кроме того, события на самих ручках по-прежнему функционируют нормально.
Недостатком является то, что вы должны обрабатывать щелчки слайдера самостоятельно, вручную. Но, как показано выше, это не так сложно сделать.
В любом случае, надеюсь, что это полезно для других, сталкивающихся с этой проблемой.