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

Javascript window.parent jQuery选择器在IE8中不工作,javascript,jquery,internet-explorer-8,css-selectors,Javascript,Jquery,Internet Explorer 8,Css Selectors,下面的代码工作正常 $('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 * de

下面的代码工作正常

$('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;
});

我想澄清的是,
窗口
选择器在这种情况下也不起作用。

问题可能是jQuery的事件处理程序包装器必须使用
窗口.event
来检索IE中的当前事件。如果您从窗口a对窗口B中的事件设置处理程序,窗口A中的脚本将查看窗口A的
窗口.event
,而事件实际发生在窗口B上

但可能还有更多的问题。跨窗口/框架脚本充满了困难,jQuery并不是专门为解决这些问题而设计的。为了使jQuery跨框架正常工作,您通常需要在两个窗口中都有一个jQuery实例,并且应该只使用相应的jQuery实例($)与每个窗口交互

eta重新评论:

好的,进一步研究了
mouseweel
,我不知道你的代码在Firefox中是如何工作的(我当然不知道)。Firefox根本不支持
mousewheel
事件;相反,它支持
DOMMouseScroll
事件。另外,对于支持
鼠标滚轮的其他浏览器,它应该绑定到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,如果它填充浏览器。)

hi bobice,这种情况下只有一个窗口,我在处理程序中尝试了“window.event”而不是“event”,但它只在dreamweaver和IE8中产生语法错误。如果只有一个窗口,为什么要访问
window.parent
?无论如何,delta属性通常会作为
event.wheeldta
访问。但是,如果你有语法错误,你甚至没有走那么远!bobince你能看看我在上面的问题中包含的代码吗,这是你推断的吗。该代码在我添加.wheelDelta之后立即给了我语法错误。谢谢你没有将属性访问权放在函数参数列表中。它应该是
function(event){
window.scrollBy(event.wheelDelta*-120,0);
。我决定只使用工作版本,如果你有一个工作代码,为什么问题是为什么不工作的版本有故障?!