Как программно установить значение ползунка пользовательского интерфейса 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) вызовет встроенную функцию изменения. поэтому предложение не использовать обратный вызов слайдов.