![]() |
Ajax + Jquery [start skryptu po pojawieniu sie elementu] - Wersja do druku +- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl) +-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www) +--- Dział: xHTML, CSS, JavaScript (https://www.webmastertalk.pl/forum-xhtml-css-javascript) +--- Wątek: Ajax + Jquery [start skryptu po pojawieniu sie elementu] (/thread-ajax-jquery-start-skryptu-po-pojawieniu-sie-elementu) |
Ajax + Jquery [start skryptu po pojawieniu sie elementu] - zoinho - 14-12-2010 Witam, od bardzo niedawna siedze w jQuery ![]() Chodzi o to, iż jeden skrypt tworzy elementy strony [czyli np jakieś tam divy], a inny go ostylowuje nadając odpowiednie klasy CSS. Problem polega na tym, iż skrypt ostylowania wywołuje się szybciej niż skrypt generowania tych divów i koniec końców wszystko wygląda brzydko. Czy da się ajaxowo jakos tak wywołać funkcje ostylowującą, dopiero wtedy jak np na stronie pojawi się ten wygenerowany div? [ma on id]. Ajax to dla mnie zupełna nowość [zapoznałem się z ajaxem w jQuery, wiem ze działa asynchronicznie, ale nie ogarniam tego szerzej], ale ja bym po prostu [jeśli się da] zarzucił jakiegoś while'a(?), który leci po całej stronie w poszukiwaniu id tego generowanego diva i kiedy go znajdzie , wtedy pętla się przerywa i wykonuje skrypt ostylowania. Wiem, że troche chaotycznie pisze, ale mam nadzieję, że w miare wyjaśniłem o co mi chodzi. Pozdrawiam i czekam na pomysły i rady ![]() Edit// Poszperałem, poszperałem i nie wiem czy dobrze zrozumiałem, ale jest w $.ajax() taka zmienna jak context. Jakbym ja ustawil na tego diva który ma się wygenerować ze skryptu, czy to by rozwiązało sprawę? RE: Ajax + Jquery [start skryptu po pojawieniu sie elementu] - Kartofelek - 14-12-2010 W sumie bez sensu nieco. Czekaj czekaj. Skrypt tworzy sobie div np Kod: var $k = $('<div class="jakies_divy"></div>'); ... potem tego "k" stylujesz. Za pomocą jquery masz dostęp do wszystkich elementów na stronie. Korzystasz więc z $, aby pobierać kolekcje elementów. Pobierasz je np tak: Kod: $('.jakies_divy').addClass(.......) lub ostylować wcześniej utworzoną zmienną Kod: $k.addClass('jakas_klasa'); //<- tutaj wczęsniej utworzyłem zmienną $k ($ to tylko w tym przypadku taka praktyka by wiedzieć że to obiekt jquery) Stylowanie takie możesz sobie włożyć w funkcję i od ciebie będzie zależało kiedy ją wywołasz. Jak powyższe nie znajdzie takich divów to po prostu nic nie zrobi. Ale błędu nie będzie. Jeżeli dodatkowo chcesz sobie sprawdzić, czy takie elementy w ogóle istnieją to korzystasz z .... length ![]() Kod: $('.jakies_divy').length To o czym pisałeś też jest oczywiście możliwe: Kod: $.ajax({ ale to wyważanie drzwi dźwigiem. Lepiej po prostu wywołać z funkcji. Zapraszam do mojego kursu: http://doman.art.pl/kursjs/kurs/jquery/jquery.html RE: Ajax + Jquery [start skryptu po pojawieniu sie elementu] - zoinho - 15-12-2010 A powiedz tylko czym jest w success: function(msg) { $('.jakies_divy').css({ ...... }); parametr msg? To jakas zmienna wczesniej utworzona? W przykladach po sieci spotykalem tez "html". RE: Ajax + Jquery [start skryptu po pojawieniu sie elementu] - Kartofelek - 15-12-2010 msg czyli respond - to co dostaniesz z serwera. Jeżeli nie ustawisz innego typu danych, to normalnie dostajesz format tekstowy. Więc np możesz to wykorzytać tak: success: function(msg) { if (msg=="jest_ok") {.......} if (parseInt(msg)==21) {.....} } Jeżeli chcesz inny typ danych (polecam Json) wtedy ustawiasz dodatkowo typ danych, które dostaniesz: $.ajax({ type: "POST", url: "test.php", data: "..........", dataType : 'json', //<---- TUTAJ USTAWILEM complete: function(msg) { $("#loading").hide(); }, success: function(msg) { $('.jakies_divy').css({ ...... }); }, error: function(msg) { } }); Po co używać innych typów danych? Powiedzmy, że chcesz dostać w msg kilka zmiennych. W txt, było by to masakrycznie nie praktyczne i nie wygodne. Możesz użyć jakiegoś separatora, ale szybciej niż później pojawi się problem. A tak w formacie json przesylasz sobie obiekt i odwolujesz sie do jego wlasciwosci: success: function(j) { alert(j.costam) }, Oczywiście wcześniej musisz sobie echować z php taki obiekt, ale to już innym razem ok? |