Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Ajax + Jquery [start skryptu po pojawieniu sie elementu]
#1
Witam, od bardzo niedawna siedze w jQueryWink. Z językiem pracuje mi się bardzo dobrze, jednak ostatnio programując pewną stronę napotkałem na dość duży problem.

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 Wink.
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ę?
Odpowiedz
#2
W sumie bez sensu nieco.
Czekaj czekaj. Skrypt tworzy sobie div

np
Kod:
var $k = $('<div class="jakies_divy"></div>');
$('body:eq(0)').append($k);

...
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 Smile

Kod:
$('.jakies_divy').length

To o czym pisałeś też jest oczywiście możliwe:

Kod:
    $.ajax({
        type: "POST",
        url: "test.php",
        data: "..........",
        complete: function(msg) {
                $("#loading").hide();
        },
        success: function(msg) {
                $('.jakies_divy').css({ ...... });
        },
        error: function(msg) {
                alert( "Wystąpił błąd");
        }
    });

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
Odpowiedz
#3
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".
Odpowiedz
#4
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?
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
Sad HTML/CSS/JQUERY - Potrzebuje pomocy / Bezradność jokerblitzz 10 10,228 28-04-2016, 00:24
Ostatni post: mubi
  jquery? mordrag 0 2,336 29-03-2015, 17:44
Ostatni post: mordrag
  [Jak zrobić]Wysokość górnego elementu zależna od wysokości dolnego elementu. MatixYo 5 6,034 08-10-2014, 18:08
Ostatni post: Peter
  aby funkcja JQuery zadzialala po okreslonym czasie Arnimarl 2 3,820 25-05-2014, 07:38
Ostatni post: Arnimarl
  Konflikt Mootools/Jquery kurde 2 3,244 31-10-2013, 01:44
Ostatni post: kornell

Skocz do:


Użytkownicy przeglądający ten wątek:
Sponsorzy i przyjaciele
SeoHost.pl