Как программно установить значение ползунка пользовательского интерфейса jQuery и запускать события?

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

$("#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);

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

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

5 ответов

Решение

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

  $("#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);
        }
      });

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

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

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

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

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

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

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

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

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

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