2012-04-16 41 views
4

我之前使用Easy Slider jQuery插件,直到现在从未遇到过问题。这个问题很奇怪。看看这个主页 http://bit.ly/HKiWY6jQuery width()函数在Internet Explorer 9中返回错误值

页面会弹出显示两个值警报:

$("#slider").width() 

$("#slider3").width() 

我已经设置的值两者在CSS。一个是710px,一个是700px。

如果您在IE9中运行,它将显示$(window).width()的默认值,而不管当前窗口或文档宽度是多少。 FF和Chrome正确返回。这是为什么?

+1

宽度之前正确地呈现所有的DOM元素,你可以上传相关的脚本代码呢? – Starx 2012-04-16 08:17:50

回答

10

尝试outerWidth,并确保它包装在一个windows.ready事件监听器,以确保被计算

$("#slider3").outerWidth() 
+1

谢谢。这有效,但我最终修复了Easy Slider 1.7的slider.js。并不是说我想弄乱核心代码,但看起来这是唯一的方法。我有点希望从我的HTML/CSS中解决它。因为这个例子的网址工作正常http://cssglobe.com/lab/easyslider1.7/02.html – 2012-04-17 03:53:49

+0

以及..我很困惑,所以它现在适用于你,但你仍然必须修改该库,或者你说.width计算是lib的一部分?你有没有试过在$(document).ready(function(){}中包装代码? – Phradion 2012-04-17 05:41:58

+0

.width是lib的一部分,所以我猜这个lib在IE9中对某些html/javascript运行有bug。找出我是否可以改变我当前的html/js模板中的东西。 – 2012-04-17 06:21:18

6

我在过去使用jQuery的宽度()/ height()/ offset()。top/.left等问题时,在某个事件完全冒泡之前使用过它们。看看setTimeout(function() { alert($('#slider').width()); }, 0);有什么影响。这是一个便宜的nextTick()技巧,可能正是你需要的。