繁体   English   中英

jQuery使用侦听器在mousedown上滚动(适用于jCarousel)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM