8

私のページで iScroll を有効にしています。

スクローラーの画像がリンクになっていることに注意してください (大きな画像のポップアップが開きます。しかし、iScroll の優れた機能の 1 つは、マウスをドラッグしてスクロールできることです。しかし今、誰かがそれをドラッグすると、バーをスクロールする代わりに画像が自動的に開きます。回避策はありますか?

4

4 に答える 4

3

この問題を修正するiScrollのパッチを作成しました。ここで差分を確認できます: https ://github.com/zmathew/iscroll/commit/3d77681a9f4b3a6b5a7579df4443bc53356d5584

または、パッチを適用したバージョンのiScroll全体をここから入手することもできます:https ://github.com/zmathew/iscroll/tree/prevent-scroll-clicks

于 2012-06-05T01:23:24.100 に答える
3

スクローラーがドラッグされている間、各アンカーにクラスを追加します。たとえば、ドラッグ中に各アンカーに「ドラッグ」のクラス名を追加し、ドラッグが停止したらクラスを削除します。

これは、「ドラッグ」クラスを持つ任意のリンクに preventDefault を追加できることを意味します。次のようなもの:

    myScroll1 = new iScroll('scroll1', {
        snap: 'li',
        momentum: false,
        hScrollbar: false,
        onScrollStart: function () {
            $('div#iscroll1 a').addClass("dragging");
        },
        onScrollEnd: function () {
            $('div#iscroll1 a').removeClass("dragging");
            document.querySelector('.indicator > li.active').className = '';
            document.querySelector('.indicator > li:nth-child(' + (this.currPageX+1) + ')').className = 'active';
        }
    });
    $('.dragging').click(function (e) {
        e.preventDefault();
    }

ただし、これはテストされていないコードであるため、セレクターを調整する必要がある場合があります。

于 2012-01-22T23:15:20.767 に答える
0

解決策はうまくいきませんでした。これが私の簡単な修正です。ドラッグするときはドラッグを true に設定し、そうでないときは false に設定します。ドラッグ時にクリックしても無視してください。

 var myScroll = new iScroll("scroll1", { onBeforeScrollMove: function () {
            window.dragging = true;
        },
            onScrollEnd: function () {
                //had to use a timeout here because without it it would fire on links at the end of the drag / dragging slowly
                setTimeout(function () { 
                    window.dragging = false;
                }, 10);
            }

        });

アンカーでドラッグを確認します

    $(".myanchors a").click(function () { 
        if (window.dragging) {
            return false;
        }
    });
于 2014-02-12T13:08:51.127 に答える
-2

こんにちは、ダウンロードする iScroll 4.2.5 の修正版です

iScroll 4.2.5 + クリック修正

onBeforeScrollStart: function (e) {if(!hasTouch) e.preventDefault();},
于 2013-06-25T08:23:00.093 に答える