0

我正在尝试使用 jQuery jCarousel 作为图像浏览器。它工作正常,但我想更改交互,以便它在 mousedown 时连续滚动,而不是在单击时滚动设置的量。

显然,我是一个使用 jQuery 的完全新手,但我最初认为我可以使用 jCarousel 配置事件选项在 mousedown 时触发控件。这有效,但不会继续滚动。

我想我需要一个监听器来查看鼠标是否仍然向下,对吗?我在 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'
    });


});

我让(右)下一步按钮在点击时移动,以便与正常运行的外部控件进行比较。

4

1 回答 1

0

没有人把我从新手的深渊中拉出来,我挣扎着直到我有所行动。 这个答案看起来非常接近我所需要的,所以我用它作为起点。现在我至少到了这里

关键是,正如我所怀疑的,如果鼠标仍然按下并在 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 上滚动,而左/上一个默认为左。现在我只需要把它弄平。

于 2013-05-30T20:24:53.237 回答