我正在为网站使用jQuery jPanelMenu插件。由于导航相对较长,我在面板上得到一个滚动条。然而,一旦我到达所述面板的末尾,我也开始滚动身体。有办法防止这种情况吗?
答案 0 :(得分:2)
由于必须阻止滚动父元素,因此必须使用事件stopPropagation()。
检查JSFiddle: - JSFiddle
$(document).on('DOMMouseScroll mousewheel','#jPanelMenu-menu', function(ev) {
var $this = $(this),
scrollTop = this.scrollTop,
scrollHeight = this.scrollHeight,
height = $this.height(),
delta = (ev.type == 'DOMMouseScroll' ?
ev.originalEvent.detail * -40 :
ev.originalEvent.wheelDelta),
up = delta > 0;
var prevent = function() {
ev.stopPropagation();
ev.preventDefault();
ev.returnValue = false;
return false;
}
if (!up && -delta > scrollHeight - height - scrollTop) {
$this.scrollTop(scrollHeight);
return prevent();
} else if (up && delta > scrollTop) {
$this.scrollTop(0);
return prevent();
}
});