IE8中的jquery宽度问题

时间:2014-04-29 06:35:58

标签: jquery css internet-explorer-8

我在IE8中获得div宽度时遇到问题,在FF和chrome中都很好。 我在IE中的宽度为0,在FF和Chrome中为1366。

     $('.fs-pic').width();

HTML:

    <div class="fs-pic"> <img id="full" src=""/></div>

我把宽度视为fs-pic类的自动。

以上行在IE中返回0。 IE有替代品吗? 请帮忙。

4 个答案:

答案 0 :(得分:0)

你把它放在$(document).ready()中了吗? 尝试在$(window).load()移动它我认为它是因为图像(即创建容器的宽度)尚未加载..所以它返回0

答案 1 :(得分:0)

尝试使用$(window).load(function(){...});而不是文档就绪。

如果它仍然不起作用,那么这可以工作,使用计时器让DOM完全渲染,稍微玩一下(如果1000不起作用,请尝试3000)。

jQuery(document).ready(function () {
    setTimeout(function () {
        alert(jQuery('.fs-pic').width());

        jQuery('#accordion-wrapper').raccordion({
            speed: 1000,
            sliderWidth: jQuery('.fs-pic').width(),
            sliderHeight: 360,
            autoCollapse: false
        });
    }, 100);
});

我注意到outerWidth()innerWidth()可以提供帮助,但我还没有尝试过。

答案 2 :(得分:0)

在文档准备就绪时尝试代码,可能没有加载dom,我们在加载dom之前调用。 IE浏览器需要花费更多时间来加载FF和Chrome。

$(document).ready(function(){
    $('.fs-pic').width();
});

答案 3 :(得分:0)

您可以将load-event添加到图像中。加载图像时,事件将触发:

$(document).ready(function () {
    $('.fs-pic img').load(function() {
         alert($('.fs-pic').width()));
    });
});

我有一个工作JSFiddle,它向您显示,即使在Chrome中,当您加载大图像或连接速度较慢或浏览器速度较慢时,包装图像的范围宽度也可以为0。当您重新运行JSFiddle时,图像将位于浏览器缓存中,因此访问$(document).ready()内的宽度也会起作用。