如何在Iscroll拖动时,单击HREF
题
我在我的页面
注意滚动函数中的图像是链接(所以弹出窗口为更大的图像打开,Y'Know此协议)。但Iscroll的一个可爱功能之一是您可以拖动鼠标滚动。但现在,当有人拖动它时,它会自动打开图像而不是滚动栏。是否有解决方法?
解决方案
我会说在拖动滚动器时将类附加到每个锚点。例如,将“拖动”拖动到每个锚点的类名,然后在拖动停止时删除类。
这意味着您可以将防止default添加到具有“拖动”类的任何链接。 沿着以下方式的东西:
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();
}
.
这是未测试的代码,因此您可能需要改进选择器。
其他提示
我创建了一个修补程序来解决这个问题。你可以看到差异:
解决方案对我不起作用,这是我简单的修复。 将拖动拖动到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;
}
});
. hello这里是iScroll 4.2.5的修改版本,下载
onBeforeScrollStart: function (e) {if(!hasTouch) e.preventDefault();},
. 不隶属于 StackOverflow