【发布时间】:2013-03-09 10:35:58
【问题描述】:
我有一个带有可滚动 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
【问题讨论】:
标签: javascript html dom