我在my page上启用了iScroll。
请注意,滚动条中的图像是链接(因此弹出窗口会显示更大的图像,您知道这笔交易)。但iScroll的一个可爱功能是你可以拖动鼠标滚动。但是现在,当有人拖动它时,它会自动打开图像而不是滚动条形图。有解决方法吗?
答案 0 :(得分: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();
}
然而,这是未经测试的代码,因此您可能需要优化选择器。
答案 1 :(得分:3)
我已经为iScroll创建了一个修复此问题的补丁。你可以在这里看到差异: https://github.com/zmathew/iscroll/commit/3d77681a9f4b3a6b5a7579df4443bc53356d5584
或者,您可以从此处获取整个已修补的iScroll版本:https://github.com/zmathew/iscroll/tree/prevent-scroll-clicks
答案 2 :(得分: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;
}
});
答案 3 :(得分:-2)
你好这里是iScroll 4.2.5的修改版下载
onBeforeScrollStart: function (e) {if(!hasTouch) e.preventDefault();},