簡體   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