Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mootools] Problem z uruchomieniem Tips'a
Forum PHP.pl > Forum > XML, AJAX > AJAX
DJSuperMEN
Witam, piszę do Państwa, ponieważ liczę na Waszą pomoc. Próbowałem rozwiązać następujący problem:

Mam stronkę A. Na tej stronce wczytuje sobie kalendarz, na której wyświetlają się dni tygodnia, a gdy klikniemy, wyświetlają się TIPSY (dla niewtajemniczonych, takie chmurki z podpowiedziami). Odpowiada za to ten kod:

  1. window.addEvent('domready', function(){
  2.  
  3. var Tips2 = new Tips($$('.Tips2'), {
  4. initialize:function(){
  5. this.fx = new Fx.Style(this.toolTip, 'opacity', {duration: 500, wait: false}).set(0);
  6. },
  7. onShow: function(toolTip) {
  8. this.fx.start(1);
  9. },
  10. onHide: function(toolTip) {
  11. this.fx.start(0);
  12. }
  13. });
  14.  
  15. });


I tutaj wszystko gra. Ale dla urozmaicenia aplikacji, postanowiłem wprowadzić nowość ( blinksmiley.gif ), czyli przeglądanie innych miesięcy, bo pokazywany był tylko aktualny. A więc kalendarz sobie ajaxem pobieram z pliku, i wczytuje na stronkę.

I tutaj, ku mojemu zdziwieniu, po takim wywołaniu, TIPSy na właśnie wywołanym elemencie nie działają. Wydaje mi się że może być to związane z funkcją addEvent, bo wywołuje się ona na początku startu strony. Potem już chyba nie podmienia zmiennych, i tutaj leży problem. A więc, teraz jest tak. Wchodzimy na stronę, kalendarz działą, tipsy się wyświetlają. Klikamy sobie w > by przejść do następnego miesiąca, ajax pobiera sobie kalendarz i wczytuje, tipsy przestają działać.

Niestety, mimo moich starań nie udało się naprawić tego. Czy mógłbym prosić o pomoc, serdecznie dziękuję z góry

--
pozdrawiam
MitS
może gdy pobierasz dane ajaxem sproóbj dać zdażenie onRequest lub onComplete questionmark.gif

np.
Kod
'onRequest': function(el){
    this.fx.start(1);
},

lub
Kod
'onComplete': function(el){
    this.fx.start(1);
}
DJSuperMEN
Dzięki za wskazanie tropu, którym zacząłem podążać. Wcześniej po prostu wywoływałem f-cję
  1. function(){
  2.  
  3. var Tips2 = new Tips($$('.Tips2'), {
  4. initialize:function(){
  5. this.fx = new Fx.Style(this.toolTip, 'opacity', {duration: 500, wait: false}).set(0);
  6. },
  7. onShow: function(toolTip) {
  8. this.fx.start(1);
  9. },
  10. onHide: function(toolTip) {
  11. this.fx.start(0);
  12. }
  13. });
  14.  
  15. });

po metodzie ajaxa. Mój błąd polegał na tym, iż nie wczytane dane po prostu nie wyświetlały się w formie kalendarza, bo f-cja Tipsowania działała na nie wczytane jeszcze dane.

Rozwiązanie polegało na tym, by funkcję uruchamiającą Tipsowanie dodać po skończonym ajaxie, czyli w onComplete. THX
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.