Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP][jQuery] - Pobranie zmiennych z komórki <td> do jquery
Forum PHP.pl > Forum > Przedszkole
scorpion10
Posiadam tabelę która wyswietla dane z bazy w pętli foreach(), i chcę z jedenj komórki <TD> pobrać wybrane wartości zmiennych z tej komórki w chwili zdarzenia hover na tej komórce <td>
Jest tam kilka zmiennych a jquery zapamiętuje co najwyżej wartość z ostatniego rekordu w pętli. Jak odwołać się i pobrać z niej wartość do jquery z wybranej zmiennej np. $row['imie'] z komorki td jak poniżej




  1.  
  2. <td id="SoftWidokDevices"'.$i++.'>'.$font.'<center>'.$widok.$row["nazwisko"].'</b>&nbsp'.$row["imie"].'&nbsp'.$kreska.'&nbsp<font color="brown" size="2"><b>'.$row['alias'].
  3. '</font><font size="2">'.$pok_user.'<br><font size="1" color="blue">&nbsp' .$row['prodkomp']. '&nbsp&nbsp' .$row['modkomp'].'</font><font color="purple" size="1">&nbsp&nbsp&nbsp' .$row['nrcirf'].'</font></b></center></font></td>
  4.  
  5.  
  6.  



kod jquery

  1.  
  2. $('td[id^=SoftWidokDevices]').hover(function(){
  3.  
  4. var dat = $(this);
  5.  
  6. var jeden = dat.find("imie");
  7.  
  8. console.log(jeden);
  9.  
  10. });
  11.  
  12.  


kod ma działać tak że po najechaniu myszką na komórke td, wyświetli sie chmurka DIV w ktorej pojawią się pozostałe dane, na podstawie pobranych wczesniej z td wartości kilku zmiennych
Johnas
identyfikator zawsze bedzie działać dla jednego elementu ponieważ jest identyfikatorem więc zamiast stosować id="id" lepiej dodać class="klasa" i w jQuery zrobić
[JAVASCRIPT] pobierz, plaintext
  1. $('.klasa').hover(function(){
  2.  
  3. var dat = $(this);
  4.  
  5. var jeden = dat.find("imie");
  6.  
  7. console.log(jeden);
  8.  
  9. });
[JAVASCRIPT] pobierz, plaintext


też kiedyś tego nie kminiłem haha.gif
scorpion10
przy nadaniu klasy dla <td> i wykorzystaniu jej w JQ dostaje undefind przy próbie pobrania wartości którejkolwiek ze zmiennych w tej klasie komórki <td>
a jeżeli usune .val() to otrzymuje object, lecz nie widze w nim żadnej z wartości moich zmiennych.
trueblue
Cytat(Johnas @ 9.04.2023, 14:05:25 ) *
identyfikator zawsze bedzie działać dla jednego elementu ponieważ jest identyfikatorem więc zamiast stosować id="id" lepiej dodać class="klasa" i w jQuery zrobić

Użyty jest selektor ^= co oznacza, że autor wybiera elementy o wartości rozpoczynającej się od określonego łańcucha znaków.

Do Autora:
1. Metoda find zwraca kolekcję elementów. Chcesz uzyskać jeden, to odwołaj się do niej jak do tablicy.
2. Kiedy dostaniesz element, to jego wartość pobierasz poprzez: innerText, innerHTML lub z atrybutu/ów data-* (zależy od Twojego kodu HTML).
3. Nie ma tagu "imie", a używasz metody find, jakbyś chciał takiego szukać. Nie masz tam nawet elementu o klasie .imie.

4. Staraj się zamykać cudzysłowy (zarówno w kodzie HTML, jak i przy użyciu selektora CSS w jQuery.
5. Nie używa się już elementów <center> czy <font> - do stylowania służy CSS.

scorpion10
Cytat
5. Nie używa się już elementów <center> czy <font> - do stylowania służy CSS.


to tak wstępnie na szybko ostylowane bez css w kodzie, co poóźniej zostanie oczywiście zmienione :-)

@trueblue jak JQ liczy te elementy, czy w moim przypadku wartość umieszczonej zmiennej $row["imie"] w tym <td>
to element który mogę wydostać, ale jak mam odnaleźć jego index w tablicy, jak dokładnie sie do niego odwołać
na tym przykładzie, możesz podać krótki kod takiego odwołania. Nie stosowałem znaczników data-* i mam problem właśnie
z namierzeniem tych elementów i ich identyfikacją. Najlepszym było by jak piszesz odwołać sie jak do tablicy, tylko jaka
nazwa wówczas tablicy i pod jakim numerem indexu znaleźć dany element który mnie interesuje ?
Johnas
a nie lepiej Ci będzie zrobić tak:
  1. <td id="SoftWidokDevices'.$i++.'" class="tede" data-imie="'.$row["imie"].'">'.$font.'<center>'.$widok.$row["nazwisko"].'</b>'.$row["imie"].$kreska.'<font color="brown" size="2"><b>'.$row['alias'].
  2. '</font><font size="2">'.$pok_user.'<br><font size="1" color="blue">' .$row['prodkomp']. '' .$row['modkomp'].'</font><font color="purple" size="1"> ' .$row['nrcirf'].'</font></b></center></font></td>
  3.  


i w java script:
[JAVASCRIPT] pobierz, plaintext
  1. $('.tede').hover(function(){
  2.  
  3. var dat = $(this);
  4.  
  5. var jeden = dat.data("imie");
  6.  
  7. console.log(jeden);
  8.  
  9. });
[JAVASCRIPT] pobierz, plaintext


Tak moim zdaniem byłoby najlepiej
scorpion10
@Johnas super dzięki ! ten sposób działa :-) ale też zastanawiam się, czy bez użycia atrybutu data-* nie było by mniej kodu do pisania i jak by łatwiej dotrzeć do danych.
Zastanawia mnie właśnie sposób o którym wspomniał @trueblue , tylko nie wiem jak dokładnie odwołać się w formie array do tych danych.
Nie musiał bym wówczas dopisywać atrybutów data- w div.
viking
Na pewno łatwiej by się wybierało elementy gdybyś posprzątał bałagan w html który tam masz. Np gdyby wszystko było w span to miałbyś tablicę po użyciu find.
Johnas
dodam jeszcze że masz błąd na samym początku bo masz:
  1. <td id="SoftWidokDevices"'.$i++.'>


a powinno być:
  1. <td id="SoftWidokDevices'.$i++.'">
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.