Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][jQuery] Problem z $.load() .. nie chce wysłac jako parametru atrybutu title :/
Forum PHP.pl > Forum > Po stronie przeglądarki
kukix
Witam.

Mam elementy DIV:
  1. <div class="moj_element" title="123"></div>
  2. <div class="moj_element" title="321"></div>


Kod js:

Kod
$(document).ready(function(){
    
  $('.moj_element').load('ajax.php', {zmienna: $(this).attr('title')  }, function() { alert( $(this).attr('title') ); }  );

});


Problem w tym, że funkcja alert() poprawnie wyświetla wartośc atrybutu title.. natomiast parametr 'zmienna' ma całkowicie inną wartość.. nie wiem dokładnie skąd jest nawet pobierana.. z jakiegos nadrzędnego elementu. Czy mogę się jakoś odwołać w tym miejscu do atrybutu title elmentu do którego ładuje zawartość?
Sebusik
Kod
$(document).ready(function(){
    
  $('.moj_element').load('ajax.php', {zmienna: $(this).attr('title')  }, function() { alert( $(this).attr('title') ); }  );

});

Zapomniałeś jednego apostrofu.
kukix
Cytat(Sebusik @ 22.04.2012, 23:50:09 ) *
Kod
$(document).ready(function(){
    
  $('.moj_element').load('ajax.php', {zmienna: $(this).attr('title')  }, function() { alert( $(this).attr('title') ); }  );

});

Zapomniałeś jednego apostrofu.



w kodzie, który mnam u siebie, jest ten apostrof.. źle mi się wkleiło. ale dalej jest tak samo... doszedłem do tego, że wartośc parametry 'zmienna' to tytuł strony.. czyli po prostu znacznik <TITLE>
Sinevar
Primo to ten Twój load() wciskałby wszystko, co zwróci skrypt ajax.php do dwóch kontenerów div.moj_element. Secundo, $(this), którego używasz przy przypisywaniu wartości do zmiennej zmienna, jest obiektem window. Ten drugi $(this), z funkcji zwrotnej jest już przypisany do elementów .moj_element, dlatego alert zwraca Ci poprawną wartość (tzn połowicznie, bo alertuje dwukrotnie, dla każdego z div'ow)

Nie lepiej byłoby zrobić to tak? (tzn w chwili kliknięcia na div, doczytujesz sobie wartość ze skryptu php i wstrzykujesz go do tego diva)

  1. $(document).ready(function(){
  2. $('.moj_element').click(function() {
  3. $(this).load('ajax.php', { zmienna: $(this).attr('title') }, function() { alert($(this).attr('title')); });
  4. });
  5. });
mortus
Ja zaproponuje rozwiązanie, które nie wymusza na użytkowniku zdarzenia kliknięcia, a po prostu ładuje odpowiednią zawartość do każdego kontenera, po załadowaniu struktury HTML (chyba o to autorowi chodzi):
[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function() {
  2. $('.moj_element').each(function() {
  3. var t = $(this).attr('title');
  4. $(this).load('ajax.php', { zmienna: t }, function() { alert(t); });
  5. });
  6. });
[JAVASCRIPT] pobierz, plaintext
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.