[英]jQuery scroll on mousedown with listener (for jCarousel)
我正在尝试使用jQuery jCarousel作为图像浏览器。 它工作正常,但我想更改交互方式,以使其在鼠标按下时连续滚动,而不是在单击时滚动设置的数量。
显然,我是使用jQuery的完全新手,但我最初认为我可以使用jCarousel配置事件选项在鼠标按下时触发控件。 这可行,但不会继续滚动。
我想我需要一个监听器来查看鼠标是否仍在按下,对吗? 我在StackOverflow上找到了此解决方案,并尝试应用: 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'
});
});
我单击鼠标左键(右)以与功能外部控件进行比较。
没有人把我从新手深渊中拉出来,我挣扎了直到我走了。 这个答案看起来非常接近我所需要的,因此我以它为起点。 现在我至少到了这里 。
正如我所怀疑的那样,关键是创建一个计时器,以在鼠标仍然按下时再次调用该函数,并在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);
}
};
在小提琴上,向右箭头使鼠标向下滚动,而默认情况下向左/向左滚动。 现在,我只需要解决它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.