jQuery在IE中“部分工作”

时间:2014-04-15 23:33:14

标签: jquery css internet-explorer

我试图在屏幕小于一定大小时使用jQuery来改变一些css(基本上,这是“@media screen and(max-width:1024px)”的重新实现,但我在这种感觉在旧版本的IE中无效,我需要它。)

这适用于所有浏览器,但IE(具有讽刺意味)。它在IE中“部分”工作(所以它不是像jQuery没有正确安装的任何超级基础)。一些css得到了适当的改变。其他部分似乎根本没有改变......但是当我在控制台上吐出值时,它们似乎确实被改变了。

以下是代码:

$(window).resize(function () {
        if ($(window).width() <= 1154) {
            $(".a").css("display", "none");
            $(".b").css("right", "0px");
        } else {
            $(".a").css("display", "inline");
            $(".b").each(
                function (itemIndex, item) {
                    var a = $(item).parents(".c").children(".a");
                    $(item).css("right", a.css("width"));
                }
            );
        }
    });

这个想法是,当屏幕很小时,隐藏类“a”的元素,并调整类“b”的元素(它们位于“a”元素的左侧,也是它们的兄弟元素,两者都在“c”类的元素,以便它们占据“a”所在的空白区域。

“A”元素在所有浏览器中都被正确隐藏。在IE的某些版本中(我认为9及更早版本),“b”元素的右侧属性未正确设置,并且似乎根本没有变化。但是,如果我每次更改元素id(每个“b”都有一个唯一的id)和正确的属性,我会得到一些意想不到的结果。首先,每次更改屏幕大小(使用maximize / unmaximize按钮)时,调整大小似乎被调用两次,我假设这只是因为多个事件由于某种原因被解雇,所以可能没什么大不了的。奇怪的是,当我将屏幕缩小时,设置后“右”的实际值两次都显示为0。当我使屏幕变大时,“右”的实际值在第一次显示为0,第二次显示为180(见下文)。但是如页面上显示的那样,正确的值总是看起来像180而不是0。

setting b0 right=0px ... Actual value: 0px 
setting b0 right=0px ... Actual value: 0px 
setting b0 right=180px ... Actual value: 0px 
setting b0 right=180px ... Actual value: 180px 
setting b0 right=0px ... Actual value: 0px 
setting b0 right=0px ... Actual value: 0px 
setting b0 right=180px ... Actual value: 0px 
setting b0 right=180px ... Actual value: 180px

还应该提到的是,如果我检查HTML标签中的“正确”属性,它总是说180(不出所料)。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

由于我希望你能根据我的评论解决问题,我会将它们合并到这个答案:

虽然您已经为问题提供了详细说明和相应的代码段,但您也可以通过提供问题来改善您的问题。 a JSFiddle - 这是一个非常好的做法,因为需要将特定问题与相关组件隔离开来。至少它是一种非常好的方式,可以让其他人轻松访问它并提供帮助。然后,您可以保存您的JSFiddle,并在SO的问题上发布永久链接。

关于实际主题:

使用图书馆时,检查不兼容性始终是一个很好的起点,关于相应的目标平台 - 特别是在针对非常旧版本的某些内容时,以及时更多关于Internet Explorer

所以它与jQuery一样 - 正如他们的主页所述:&#34; jQuery 2.x与jQuery 1.x具有相同的API,但不支持Internet Explorer 6,7或8&#34;。虽然这不是问题的原因,但这可能是好的。

正如您在摆弄代码时发现的那样实际问题似乎是特定的IE CSS表达式 - 所以请允许我注意,在我看来,应该始终避免CSS表达式可能。自IE8以来,它们已被弃用,不再受支持。在安全性和性能影响方面,他们被许多人视为糟糕的主意