我在我的网页上启用了iScroll。
请注意,滚动条中的图片是链接(因此会弹出更大的图片)。但是iScroll的一个可爱功能是您可以拖动鼠标来滚动。但现在,当有人拖动它时,它会自动打开图像而不是滚动条。有没有解决方法呢?
我在我的网页上启用了iScroll。
请注意,滚动条中的图片是链接(因此会弹出更大的图片)。但是iScroll的一个可爱功能是您可以拖动鼠标来滚动。但现在,当有人拖动它时,它会自动打开图像而不是滚动条。有没有解决方法呢?
我建议在拖动滚动条时为每个锚点附加一个类。例如,当拖动时为每个锚点附加一个名为“dragging”的类,然后在停止拖动时删除该类。
这意味着您可以向任何具有“dragging”类的链接添加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();
}
这是未经测试的代码,因此您可能需要完善选择器。
这个解决方案对我不起作用,这是我的简单修复方法。 当拖动时将dragging设置为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;
}
});
你好,这里有修改版的iScroll 4.2.5可供下载
onBeforeScrollStart: function (e) {if(!hasTouch) e.preventDefault();},