Sytuacja wyglada nastepujaco:
w czesci serwisu wyswietlanie tresci obsluguje AJAXem, a dokladnie frameworkiem jQuery. Procz oczywistego dynamicznego ladowania uzywam tam efektow, fadeOut, fadeIn oraz animate, ktore 'ubarwiaja' szara wirtualna rzeczywistosc.

Problem nastepuje w momencie, gdy chce wywolac animate() dla zaktualizowanego trescia diva, aby plynnie doskalowal sie do nowej wysokosci:
  1. <?php
  2. $("#dzial_content").animate({height: makeAjax.curr}, "slow", function () {
  3. $("#dzial_content").fadeIn("slow");
  4. });
  5. ?>


skrypt reaguje tak, jakby tej wysokosci nie dostawal w ogole, mimo ze kilka linijek wyzej jest zczytywana poprawnie. Ponizej wkleje caly kod obslugujacy ladowanie ajaxa i skalowanie divow:
  1. <?php
  2. $(document).ready( function() {
  3. if($("#dzial_content")) {
  4. makeAjax.start();
  5. }
  6. });
  7.  
  8. var makeAjax = new Object({
  9.  
  10. divH: "0", curr: "0",
  11.  
  12. start: function() {
  13.  
  14. $.listen('click','.pr_link',function() {
  15. makeAjax.divH=$("#dzial_content").height();
  16. var content_show = $(this).attr("title"); 
  17. var newHgB;
  18. var newHgL;
  19. var newHgM;
  20. $(".navi_sel").css("color", "#6c6c6c");
  21. $(this).css("color", "#e35f03");
  22. $.ajax({
  23. method: "get",url: "index.php",data: content_show,
  24. cache: false, 
  25. success: function(html){ 
  26. $("#dzial_content").fadeOut("slow", function() {
  27. makeAjax.curr = $("#dzial_content").html(html).height();
  28. newHgL = $("#left").height() - makeAjax.divH + makeAjax.curr;
  29. $("#left").animate({height: newHgL}, "slow");
  30. $.getScript("js/galeria.js");
  31. });  
  32. $("#dzial_content").animate({height: makeAjax.curr}, "slow", function () {
  33. $("#dzial_content").fadeIn("slow");
  34. });
  35. }
  36. }); 
  37. return false;
  38.  
  39. }); 
  40.  
  41. }
  42.  
  43. });
  44. ?>


uzywam tam plug-inu listen, aby wczynae ajaxem linki reagowaly na skrypt.
Skrypt galerii jest dla sprawy nieistotny.
element #left jest podobnie nieistotny - musi byc aktualizowany, gdyz jest pozycjonowany jsem od poczatku.

Cala sprawa rozgywa sie w zdarzeniu success - probowalem roznych kombinacji zagniezdzania funkcji, zawsze konczylo sie tym ze height dla #dzial_content jest zczytywany niepoprawnie (co lepsze dla obliczenia wysokosci #left dziala juz poprawnie). Wyglada to efekt nielinearnosci parsowania kodu - najpierw jest trzaskane animate(), a potem html(), lecz nie wiem jak to rozwiazac.

Wkleje jeszcze fragment html'a:
  1. <div id="dzial_content_box">
  2. <div id="dzial_content">
  3. ladowana tresc
  4. </div>
  5. </div>


I css dla tych divow:
  1. #dzial_content_box
  2. {
  3. width: 670px;
  4. float: left;
  5. background: url(../images/loader.gif) no-repeat center center;
  6. }
  7.  
  8. #dzial_content
  9. {
  10. width: 670px;
  11. float: left;
  12. background: #fff;
  13. }


Bede wdzieczny za wskazanie rozwiazania lub odeslania do jakiegos przykladu rozwiazujacego problem. Przepytalem juz google na rozne sposoby, lecz milcza jak zaklete.

EDIT:
odpowiem sam sobie, problem rozwiazany

jakby kogos interesowalo to problem tkwil w tym, ze fadeOut ustawia display: none; elementu, a to z kolei traktowane jest jako height: 0;
stad swirowanie .animate()

pare kosmetycznych zabiegow i gra muzyka.