我在scrollTo上新創建div時遇到問題我通過append()添加到DOM。出於某種原因,我不能從代碼內滾動到我想要的位置,它只能從控制檯命令或如果我添加一個按鈕並以這種方式調用滾動事件。jQuery插件scrollTo只能從控制檯運行
代碼:
$('#history').scrollTo('max');
只有從控制檯的工作或連接到一個按鈕。
編輯:歷史div有溢出:汽車,不知道如果這是造成它。
我在scrollTo上新創建div時遇到問題我通過append()添加到DOM。出於某種原因,我不能從代碼內滾動到我想要的位置,它只能從控制檯命令或如果我添加一個按鈕並以這種方式調用滾動事件。jQuery插件scrollTo只能從控制檯運行
代碼:
$('#history').scrollTo('max');
只有從控制檯的工作或連接到一個按鈕。
編輯:歷史div有溢出:汽車,不知道如果這是造成它。
只是猜測,但你是否在將新元素附加到DOM後立即調用「scrollTo」?
如果是這樣,那麼DOM佈局可能沒有機會重新計算。直到當前腳本處理完成後,元素之間的相對偏移值纔會更新。
兩個可能的解決方法:
1. setTimeout("$('#history').scrollTo('max')", 1); // Call this after you append your element. This will allow the stack to unwind and update the DOM positions
2. $('#history').scrollTo(0, 9999); // Where "9999" is a value far larger than the actual height of the control.
這將表明您正試圖將scrollTo()
附加到您調用其上的函數時實際上並不存在的元素。它在控制檯中工作的事實表明了這一點。 如果是這種情況,一種方法是使用例如一個類似於livequery
的庫,或者在這些元素被附加後簡單地調用scrollTo()
函數。
我以爲我想建議1,但重試它的工作。我永遠不知道什麼時候dom元素將被完成創建。這可能需要7到500毫秒的時間。現在我有它設置爲50毫秒超時,但這是kludge,我不得不重做一些東西,謝謝無論如何。 – Rigil 2011-01-20 12:37:49