Как установить программный код слайдера jQuery UI и события пожара?

У меня есть ползунок, определенный так:

$("#slider").slider({
        orientation: "vertical",
        range: "min",
        min: 0,
        max: totalRows,
        value: totalRows,
        slide: function(e, ui) {
          scrollTheTable(ui.value, totalRows, visibleRows, $table);
        }
      });

При использовании ползунка функция, назначенная для слайда, не вызывает проблем. У меня есть таблица, которая может содержать или не содержать строку, которая имеет класс SelectedItem. Я работаю над методом, который будет "прокручивать" эту строку в верхней части таблицы при загрузке страницы в основном.

Мягкость метода выглядит следующим образом:

$("#slider").slider('value', $rows.length - index);

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

Что мне здесь не хватает?

Ответы

Ответ 1

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

  $("#slider").slider({
        orientation: "vertical",
        range: "min",
        min: 0,
        max: totalRows,
        value: totalRows,
        slide: function(e, ui) {
          scrollTheTable(ui.value, totalRows, visibleRows, $table);
        },
        change: function(e, ui) {
          scrollTheTable(ui.value, totalRows, visibleRows, $table);
        }
      });

Ответ 2

Для инициализации слайдера описанный выше метод "slide: function (..." и "change: function (" работает отлично ". Но изменить слайдер впоследствии извне, например, нажав на миниатюру или любой другой div с" on-click-event" вы можете использовать:

$("#slider").slider('value', newvalue);

Существенным намеком для меня была некорректная строка кода ($ rows?, PHP?):

$("#slider").slider('value', $rows.length - index);

Ответ 3

Почему вы не вызываете это после установки значения?

scrollTheTable($rows.length - index, totalRows, visibleRows, $table);

Ответ 4

как указано в api jquery: использование слайдера ('значение', X) вызовет встроенную функцию изменения. поэтому предложение состоит в том, чтобы не использовать обратный вызов слайда.

Ответ 5

Я использую слайдер с двумя ручками. Я смог программно обновить его с помощью этого кода:

$("#slider-range").slider('values',[57,180]).change();