下面的代码运行良好
$('html').bind('mousewheel', function(event, delta) {
window.parent.scrollBy(-120 * delta,0);
return false;
});但这个没有,谁能告诉我为什么。我很想知道。
$(window.parent).bind('mousewheel', function(event, delta) {
window.parent.scrollBy(-120 * delta,0);
return false;
});我想澄清一下,在这种情况下,window选择器也不能工作。
发布于 2009-11-02 10:23:23
问题可能是jQuery的事件处理程序包装器必须使用window.event检索IE中的当前事件。如果您从窗口A对窗口B中的事件设置处理程序,则窗口A中的脚本将查看窗口A的window.event,而该事件实际上发生在窗口B上。
但可能还有更多的问题。跨窗口/框架脚本编写充满了困难,而jQuery并不是专门针对它们设计的。要使jQuery正确地跨帧工作,通常需要在两个窗口中都有一个jQuery实例,并且应该只使用相应的jQuery实例($)与每个窗口进行交互。
eta评论:
好的,在深入研究了mousewheel之后,我不知道您的代码如何在Firefox中工作(对我来说肯定不是这样)。火狐根本不支持mousewheel事件;相反,它支持DOMMouseScroll事件。对于其他支持mousewheel的浏览器,它应该绑定到DOM节点,而不是窗口。所以我想你要找的是:
if ('MouseScrollEvent' in window) {
$(document).bind('DOMMouseScroll', function(event) {
return scroll(event.detail*-40);
});
} else {
$(document).bind('mousewheel', function(event) {
return scroll(event.wheelDelta);
});
}
function scroll(d) {
window.scrollBy(-d, 0);
return false;
};(然而,在WebKit中,当鼠标移出与视口宽度相对应的水平区域时,这将停止滚动。如果div填充了浏览器,您可能更愿意将事件绑定到div这样的更广泛的元素。)
https://stackoverflow.com/questions/1660378
复制相似问题