2011-01-20 19 views
0

新しく作成されたdivsのscrollToに問題がありますが、append()を介してDOMに追加しています。何らかの理由で私はコード内からスクロールできませんが、コンソールコマンドからのみ、またはボタンを追加してスクロールイベントをそのように呼び出すと動作します。jQueryプラグインscrollToはコンソールからしか動作しません

コード:

$('#history').scrollTo('max'); 

のみコンソールからの作品やボタンに取り付けられています。

編集:ヒストリー部門にはオーバーフローがあります:自動、それが原因であるかどうかわかりません。

答えて

0

DOMに新しい要素を追加した直後に「scrollTo」を呼び出していますか?

DOMレイアウトが再計算される可能性は低いです。要素間の相対オフセット値は、現在のスクリプト処理が終了するまで更新されません。

2つの回避策:

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. 
+0

私はそれが仕事をした提案1が、再試行を試みたと思いました。 DOM要素がいつ作成されるのかはわかりません。それは7から500ミリ秒のどこかにかかる可能性があります。今私は50ミリ秒タイムアウトに設定しているが、これはクルージュです、病気は何かをやり直さなければならない、どうもありがとう。 – Rigil

+0

親要素のonnodeinsertedイベントへのscrollTo呼び出しの接続を試してみるとよいでしょう。私はそのイベントが "appendChild"コールが行われたか、または "実現"が実際に起こった後に同期して起動するかどうかはわかりません。あなたは本当に好奇心を持っています.... – selbie

0

これは、関数を呼び出すときに実際に存在しない要素にscrollTo()を添付しようとしていることを示します。それがコンソールで動作するという事実はこれを示唆しています。その場合、1つの方法は、たとえば、 livequeryのようなライブラリを作成するか、これらの要素が追加された後にこれらの要素に対して単にscrollTo()関数を呼び出します。

関連する問題