Jquery 如何在iScroll中拖动时不单击a href

Jquery 如何在iScroll中拖动时不单击a href,jquery,hyperlink,drag,iscroll,Jquery,Hyperlink,Drag,Iscroll,我已经启用了iScroll 请注意,滚动条中的图像是链接(因此会打开一个弹出窗口,显示较大的图像,您知道这是怎么回事)。但iScroll的一个可爱特性是,你可以拖动鼠标滚动。但现在,当有人拖动它时,它会自动打开图像,而不是滚动条。有解决方法吗?我想说的是,在拖动滚动条时,在每个锚点上附加一个类。例如,在拖动时向每个锚点添加一个类名“dragging”,然后在拖动停止时删除该类 这意味着您可以将preventDefault添加到任何具有“Draging”类的链接中。 大致如下: myScr

我已经启用了iScroll


请注意,滚动条中的图像是链接(因此会打开一个弹出窗口,显示较大的图像,您知道这是怎么回事)。但iScroll的一个可爱特性是,你可以拖动鼠标滚动。但现在,当有人拖动它时,它会自动打开图像,而不是滚动条。有解决方法吗?

我想说的是,在拖动滚动条时,在每个锚点上附加一个类。例如,在拖动时向每个锚点添加一个类名“dragging”,然后在拖动停止时删除该类

这意味着您可以将preventDefault添加到任何具有“Draging”类的链接中。 大致如下:

    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();
    }

但是,这是未经测试的代码,因此您可能需要改进选择器。

我为iScroll创建了一个修补程序,用于修复此问题。您可以在此处看到差异:


或者,您也可以从这里获取完整的iScroll补丁版本:

您好,这里是iScroll 4.2.5的修改版下载


解决方案对我不起作用,这里是我的简单解决方案。 拖动时将拖动设置为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;
        }
    });

我有一种感觉,在链接上放置一个侦听器是一种方法。也就是说,当点击链接时(在这种情况下是意外发生的),它会阻止默认行为,检查用户是否滚动,如果没有,是否会打开链接?希望这能激励你或其他人。(我很想知道这是否是正确的做法)在iOS5退出后,你还需要iScroll吗?为什么不使用
-webkit overflow scrolling:touch
我希望在桌面和手机上都有相同的功能。这是我知道的唯一一个没问题的。根据用户评论等,也作为旁注。该滚动条在IE8中不适用于我。它会因错误而消亡:对象不支持此属性或方法行:52 Char:5 Code:0感谢您提供新的修补版本!及时,我真幸运!新(4.2)iscroll版本是否有此修补程序的版本?
    $(".myanchors a").click(function () { 
        if (window.dragging) {
            return false;
        }
    });