Слайдеры jQuery UI на сенсорных устройствах

Я разрабатываю веб-сайт с использованием пользовательского интерфейса jQuery, и на моем сайте есть несколько элементов, которые кажутся несовместимыми при просмотре на устройствах с сенсорным экраном; они не вызывают никаких ошибок, но поведение не такое, каким оно должно быть.

Рассматриваемые элементы - это ползунки и ползунки, как определено в пользовательском интерфейсе jQuery; на сенсорном экране вместо того, чтобы регистрировать прикосновение как захват ручки и перетаскивание при перетаскивании маркера по ползунку, он просто перемещает всю веб-страницу в сторону экрана. Это сработает, если вы нажмете на ручку, а затем коснитесь места на ползунке, где вы хотите, чтобы ручка оказалась в конце, но это очень медленно и не идеально. Есть идеи?

Я попытался скачать плагин jqtouch, а затем подключить .touch([...]) на все вызовы slider() и rangelider(), но это не сработало.

Спасибо!

ОБНОВЛЕНИЕ: я нашел этот "патч" на веб-сайте jQuery UI

http://bugs.jqueryui.com/ticket/4143

это говорит о том, что это облегчает слайдер на iPhone, но теперь еще один глупый вопрос: как мне включить этот "патч" в мой код? Должен ли я просто включить его в начале кода, как плагин?

4 ответа

Эта библиотека предлагает то, что вы ищете:

https://github.com/furf/jquery-ui-touch-punch

Также есть пример использования кода (просто добавьте плагин):

<script src="http://code.jquery.com/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.8.17/jquery-ui.min.js"></script>
<script src="jquery.ui.touch-punch.min.js"></script>
<script>
  $('#widget').draggable();
</script>

Просто хотел добавить новую информацию об этом. Touch-punch отлично подойдет для iPad и Android-устройств. Но этот слайдер не будет работать на мобильных устройствах Windows, насколько я мог его протестировать (с последними версиями jquery ui & Touch punch)

Исправление довольно простое, просто добавьте следующие CSS-правила в.ui-slider-handle:

-ms-touch-action: none;
touch-action: none;

Надеюсь это поможет

Как предположил @dazbradbury, библиотека touchpunch может помочь преобразовать события мыши в события касания. Параметры в.draggable() ограничивают перемещение ползунка, поэтому его нельзя переместить за пределы родительского ползунка.

<script src="http://code.jquery.com/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.8.17/jquery-ui.min.js"></script>
<script src="jquery.ui.touch-punch.min.js"></script>
<script>
$(".ui-slider-handle").draggable({ 
    axis: "x",
    containment: "parent"
});
</script>

РЕДАКТИРОВАТЬ: Если вы уже используете слайдер Jquery UI, вам нужно только включить библиотеку Touchpunch. Не вызывайте.draggable() для.ui-slider-handle, потому что он перезапишет существующую функциональность.

У меня такая же проблема. Я разработал сложный пользовательский интерфейс на основе слайдера jQuery UI только для того, чтобы понять, что он вообще не работает на мобильных устройствах. Я попробовал перечисленные здесь предложения, но поскольку у меня есть собственное решение, основанное только на jQuery UI Slider, оно не сработало.

Просто используйте noUiSlider.

Он выполняет все сложные функции (и многое другое) как тот, который я построил поверх слайдера пользовательского интерфейса jQuery. Он прекрасно работает на мобильных устройствах и прост в оформлении.

Другие вопросы по тегам