jQuery Mobile Slider - обновление события - PullRequest
2 голосов
/ 23 июля 2011

У меня есть страница с 2 ползунками jQuery Mobile и функциями для событий .change () для обоих ползунков.

Мне нужно установить взаимосвязь между двумя ползунками, чтобы при перемещении 1-го ползунка изменялось максимальное значение 2-го ползунка.

Проблема в том, что если я сделаю это в событии изменения 1-го ползунка: например: $('#durationSlider').max("10"); // Change the max of the 2nd slider

$('#durationSlider').slider("refresh"); // Visually update the 2nd slider

Тогда это, очевидно, вызывает событие изменения 2-го ползунка и вызывает рекурсивный код.

Есть ли способ передать флаг или данные, чтобы указать, произошло ли событие изменения с пользовательского слайда или с помощью ручного вызова функции .slider ("refresh")?

Ответы [ 3 ]

1 голос
/ 23 июля 2011

То, что вы можете сделать, чтобы проверить, генерируется ли evt «вручную» или «компьютер», - это проверить originalEvent в функции изменения.

 change: function(evt, ui){
           if (evt.originalEvent === undefined){
              //not human
            }else{
             //human
             }

Посмотрите на эту скрипку для примера http://jsfiddle.net/nicolapeluchetti/82B4m/

код скрипты (на случай, если jsfiddle не работает):

<button id='b'>Click me</button>

<button id='c'>Click the other</button>

$('#b').click(function(e) {
    if (e.originalEvent === undefined) {
        alert('not human');
    } else {
        alert('human');
    }

});

$('#c').click(function(e) {
    $('#b').click();
});
0 голосов
/ 04 мая 2012

Вы также можете отменить привязку перед обновлением ползунка, а затем снова связать с вашей функцией.

$('#durationSlider').unbind("change");
$('#durationSlider').slider("refresh");
$('#durationSlider').bind("change", MyFunction);
0 голосов
/ 10 марта 2012

Проблема с e.originalEvent и мобильным слайдером jquery озадачивает меня:

http://jsfiddle.net/82B4m/68/

Если ползунок перетаскивается , originalEvent is undefined, или, как называет @Nicola, «не человек»;если само значение input изменяется, originalEvent существует, и все хорошо.

Итак, похоже, трюк получает событие slidechange, а не changeсобытие, но я не вижу, что slidechange задокументировано в документах jquery MOBILE.

...