2012-04-16 66 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()技巧,可能正是你需要的。