我有一个带有可滚动 div 的网页。在可滚动 div 之上,我绝对定位了与可滚动 div 的一半重叠的 div。
当我将鼠标光标放在可滚动的 div 上时,我可以用鼠标滚轮滚动它。但是当我将光标移动到重叠的 div 上时,鼠标滚轮会停止滚动该 div(这是正确的行为,因为绝对定位的 div 不在可滚动的 div 内)。
问题:如何将绝对定位的 div 接收到的滚动事件传递或分派给这个底层的可滚动 div,以使这个绝对定位的 div 对鼠标滚轮事件“透明”。
我可以让它在 Chrome 中运行,但不能在 IE 和 Firefox 中运行。如何重写此代码以使其在 IE 和 Firefox 中工作?
if ($.browser.webkit) {
$(".overlap-container").bind("mousewheel", function (e) {
var origEvent = e.originalEvent;
var evt = document.createEvent("WheelEvent");
evt.initWebKitWheelEvent(
origEvent.wheelDeltaX,
origEvent.wheelDeltaY,
window,
0,
0,
0,
0,
origEvent.ctrlKey,
origEvent.altKey,
origEvent.shiftKey,
origEvent.metaKey);
$(".scroll-container").get(0).dispatchEvent(evt);
});
}
请参阅此处的示例:http: //jsfiddle.net/HAc4K/5
已编辑:此问题最初来自 jqGrid - 冻结的列不会对鼠标滚轮滚动做出反应。
在 Chrome 和 Firefox 中,支持很棒的 CSS 属性:pointer-events:none