IE8的jQuery宽度

时间:2013-03-06 15:45:03

标签: javascript jquery

我正在尝试在div上动态设置宽度。这适用于Safari,Chrome和Firefox,但不适用于IE8。这是使用jQuery UI进行滑块功能。到目前为止,这是我的代码:

var ourStoryPosts = $(".ourStory .grid_12mod").children();
var ourStoryLength = ourStoryPosts.length;
var ourStoryWidth = $(ourStoryPosts[2]).outerWidth(true);
var ourStoryWrapperWidth = ourStoryLength * ourStoryWidth;
var maxSlider = ourStoryWrapperWidth - 1020;

$(".ourStory .grid_12mod").width(ourStoryWrapperWidth);

$(".ourStorySlider").slider({ 
    step: 1, 
    max: maxSlider,
    slide: function( event, ui) {
        $(".ourStory").css({
            "left" : -ui.value
        });
    }
});

如您所见,我使用变量来设置这些值。 width()方法未按预期工作。

我尝试使用String()构造函数显式转换为字符串。我也尝试在表达式的末尾使用+ "px"。每次,div都设置为0px。为什么这不能正常工作?

2 个答案:

答案 0 :(得分:0)

您可以尝试设置css属性宽度吗?

$(".ourStory .grid_12mod").css('width', ourStoryWrapperWidth.toString() + 'px');

答案 1 :(得分:0)

不确定实际问题是什么,但使用原生JS为我修复了它:

var elem = document.querySelector(".grid_12mod");
var ourStoryChildren = elem.children;

使用children()的jQuery 1.9方法记录了Safari,Chrome和Firefox中5元素的结果,而IE8记录了1。使用children对象的原生elem属性修复了问题,并为所有浏览器记录了5

这是记录0的原因是因为当1存在时,IE8仅返回5子元素,因此数学已关闭且IE8正在尝试查找第二个数组元素当它只找到1元素时。