Javascript 具有jQuery宽度的IE8
我正在尝试在div上动态设置一个宽度。这在Safari、Chrome和Firefox上是正确的,但在IE8中不是。这是使用jqueryui来实现slider函数。以下是我目前的代码:Javascript 具有jQuery宽度的IE8,javascript,jquery,Javascript,Jquery,我正在尝试在div上动态设置一个宽度。这在Safari、Chrome和Firefox上是正确的,但在IE8中不是。这是使用jqueryui来实现slider函数。以下是我目前的代码: var ourStoryPosts = $(".ourStory .grid_12mod").children(); var ourStoryLength = ourStoryPosts.length; var ourStoryWidth = $(ourStoryPosts[2]).outerWidth(true)
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
。为什么不能正常工作?您可以尝试设置css属性宽度
$(".ourStory .grid_12mod").css('width', ourStoryWrapperWidth.toString() + 'px');
不确定实际问题是什么,但使用本机JS为我解决了这个问题:
var elem = document.querySelector(".grid_12mod");
var ourStoryChildren = elem.children;
使用jQuery 1.9方法children()
在Safari、Chrome和Firefox中记录5
元素的结果,而IE8则记录1
。使用elem
对象的本机children
属性修复了问题,并为所有浏览器记录了5
之所以记录
0
,是因为当5
存在时,IE8只返回1
子元素,因此,当IE8只找到1
元素时,数学运算被关闭,IE8试图找到第二个数组元素。尝试在变量上使用parseFloat,并在控制台上记录每一行,以查看发生了什么wrong@CR41G14parseFloat
没有成功。是否建议使用css属性而不是宽度?它们应该都有相同的结果,除非其他css父规则禁止。当您对变量ourStoryWrapperWidth执行console.log时,会出现什么?@mcpDESIGNS对,我应该很清楚。对值进行硬编码可以很好地工作。它记录了符合我需要的1275
。所以,这个值是正确的。在parent或max width属性上是否有其他css否决了IE8优先考虑的内容?正如我在上面的评论中所说,硬编码这些值很好。输入数字1275
可以使它正常工作。当您使用IE8开发工具F12检查元素时,建议的代码是否将内联css“宽度”放在元素上?是的。宽度属性是内联的。但是div没有调整大小?