jQuery прокрутка mousedown со слушателем (для jCarousel)
Я пытаюсь использовать jQuery jCarousel в качестве браузера изображений. Он работает нормально, но я бы хотел изменить взаимодействие так, чтобы оно непрерывно прокручивалось при mousedown, а не прокручивало заданное количество по клику.
Очевидно, что я новичок в использовании jQuery, но сначала я подумал, что могу использовать опцию события конфигурации jCarousel для запуска элемента управления в mousedown. Это работает, но не продолжает прокрутку.
Я думаю, что мне нужен слушатель, чтобы увидеть, не нажата ли мышь, верно? Я нашел это решение в Stackru и пытаюсь применить: http://jsfiddle.net/amenity/BSq85/19
jQuery(document).ready(function () {
$('.jcarousel').jcarousel({
wrap: 'circular',
animation: 1500,
easing: 'linear'
});
var timeout, clicker = $('.jcarousel-prev');
var count = 0;
clicker.mousedown(function () {
timeout = setInterval(function () {
$('.jcarousel-prev').jcarouselControl({
target: '-=2'
});
}, 500);
return false;
});
$(document).mouseup(function () {
clearInterval(timeout);
return false;
});
$('.jcarousel-next').jcarouselControl({
target: '+=2',
'event': 'mousedown'
});
});
Я оставил (правую) кнопку "Далее", двигаясь по щелчку, для сравнения с действующим внешним управлением.
1 ответ
Не имея никого, кто мог бы вытащить меня из пропасти новичка, я барахтался, пока не пойду. Этот ответ выглядел так близко к тому, что мне было нужно, и я использовал его в качестве отправной точки. Теперь я, по крайней мере, попал сюда.
Ключ, как я и подозревал, заключается в создании таймера для повторного вызова функции, если мышь все еще нажата, и очистке его при mouseup:
var _this = null;
$('.jcarousel-next').mousedown(function () {
$('.jcarousel-next').jcarouselControl({
target: '+=2'
});
_this = $(this);
_this.click();
window.setTimeout(CallAgain, 100);
});
$('.jcarousel-next').mouseup(function () {
_this = null;
});
function CallAgain() {
if (_this != null) {
//alert("Inside Call again");
_this.click();
window.setTimeout(CallAgain, 100);
}
};
На скрипке стрелка вправо имеет прокрутку на mousedown, в то время как left/prev остается по умолчанию. Теперь мне просто нужно это сгладить.