Динамическое изменение значения флип-переключателя с помощью jQuery Mobile - PullRequest
9 голосов
/ 24 ноября 2010

Я работаю с jQuery Mobile и сохраняю некоторые настройки в файле cookie. Когда страница настроек перезагружается, я читаю куки, чтобы установить все значения. У меня проблемы с установкой переключателя flip . Большинство элементов просто должны вызывать события keyup или changed, но я не уверен, как переключающие переключатели получают значение из поля выбора. Есть идеи?

Ответы [ 6 ]

24 голосов
/ 24 июня 2011

После изменения значения переключателя его необходимо обновить, чтобы анимация переключалась:

$('#Switch2').val('on').slider("refresh");
3 голосов
/ 14 декабря 2010

Похоже, он сломан.

Перейдите на страницу: http://jquerymobile.com/demos/1.0a2/#docs/forms/forms-switch.html и используйте консоль firebug для запуска следующего:

$('#slider2').val('on').trigger('keyup');

изменяет ширину «вкл» части переключателя, но не перемещает ползунок.

Итак, ответ таков: дождитесь выхода JQM:)

Ошибка выдается здесь: https://github.com/jquery/jquery-mobile/issues/issue/676

1 голос
/ 12 апреля 2013

Простой способ добиться этого - установить значение, запустить создание и обновление.После этого вам нужно вызвать событие Slidestop, чтобы выполнить любое действие, которое вы привязали к слайдеру.Например:

$('#mySlider').val('on').trigger('create').slider("refresh");
$('#mySlider').trigger('slidestop');

Я проверял это на мобильной версии jQuery.1.3.0

1 голос
/ 07 декабря 2010

Я думаю, вы можете просто установить значение в select как обычный HTML, и тумблер переключится автоматически.т.е.

<select name="slider" id="slider" data-role="slider">
  <option value="off">Off</option>
  <option value="on" selected="selected">On</option>
</select>
0 голосов
/ 19 октября 2012

Это работает для меня:

 if (someCondition) {
         $('#slider').val('off');
     }
     else {
         $('#slider').val('on');
     }
     try {
         $('#slider').slider("refresh");
     }
     catch (err) {
         console.log ("Error occurred refreshing slider (probabily first time!)");
     }
0 голосов
/ 21 апреля 2011

Использование $('#slider2').val('on') изменит значение, как и положено.Однако он не добавляет классы CSS, такие как ui-btn-active, к option и не удаляет этот класс из option.Если вы хотите динамически изменить option, то вам придется позаботиться об этих частях вручную (не jQuery Mobile).

...