首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >window.parent jQuery选择器不在IE8中工作

window.parent jQuery选择器不在IE8中工作
EN

Stack Overflow用户
提问于 2009-11-02 10:07:19
回答 1查看 3.4K关注 0票数 0

下面的代码运行良好

代码语言:javascript
复制
$('html').bind('mousewheel', function(event, delta) {
    window.parent.scrollBy(-120 * delta,0);
    return false;
});

但这个没有,谁能告诉我为什么。我很想知道。

代码语言:javascript
复制
$(window.parent).bind('mousewheel', function(event, delta) {
    window.parent.scrollBy(-120 * delta,0);
    return false;
});

我想澄清一下,在这种情况下,window选择器也不能工作。

EN

回答 1

Stack Overflow用户

发布于 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节点,而不是窗口。所以我想你要找的是:

代码语言:javascript
复制
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这样的更广泛的元素。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1660378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档