2012-03-29 11 views
1

jScrollPaneに同期性の問題があります。
このdivが更新されたときに、jScrollPaneを再初期化する必要があるときに、Ajax経由でdivコンテンツを更新しています。 htmlコードが大きすぎると、jScrollPane()の呼び出しは私が更新しているコンテンツの一部だけを使用しているように見え、いくつかの要素はscrollPaneの外にとどまっています。 jScrollPane()をsetTimeoutの中に2秒間置くと動作しますが、これを解決する良い方法ではありません。
申し訳ありませんが、私の悪い英語です。コードだjScrollPane synchronicity

success : function(HTMLcode){ 
    $("#div_inside").empty().html(HTMLcode); 
    $('#pane').jScrollPane(); 
    //SET SCROLL POSITION 
    $('#pane')[0].scrollTo(panetop); 
} 
+0

AJAXコールで['success'コールバック](http://stackoverflow.com/q/7326933/901048)を使用していますか?より多くのコードを提供してください。 – Blazemonger

+0

はい、その部分はajax呼び出しの成功コールバックにあります。 問題は、html()関数が終了する前にjScrollPane()が呼び出されていることです(私の意見)、div内のコードは完全にレンダリングされません。 これは成功コールバックのコードです: 'success:function(HTMLcode){ $("#div_inside ")空().html(HTMLcode); $( '#pane')。jScrollPane(); // SET SCROLL POSITION $( '#pane')[0] .scrollTo(panetop); } ' – Dario

+0

HTMLコードにイメージをロードしていますか? – Blazemonger

答えて

1

私は最近、同様の問題に遭遇しましたが - HTMLがロードされた後、そのHTMLで外部の画像がない持っていたことが判明しました。したがって、HTMLが読み込まれ、次にjScrollpaneのサイズが変更され、イメージが読み込まれ、HTMLの長さが再び変更されます。

弱い解決策は、あなたが持っているように、setTimeoutでjScrollpaneをトリガーすることです。

良い解決策は、読み込まれているHTMLを通り、幅と高さの属性をすべての画像タグに割り当てることです。そうすれば、画像がロードされる前でも正しい長さになります。

読み込んだHTMLを編集できない場合は、setTimeoutがおそらく最も簡単な解決策です。

+0

ありがとう、ありがとうございます。私はimgタグのサイズを追加しました。今は正しく動作しています – Dario

+0

私も同様の問題があり、問題の原因を突き止めることができませんでした。 HTMLサイズのディメンションが追加され、魅力的に機能しました! – Swordfish0321