Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JS,jQuery] Wykonuje się tylko pierwszy wygenerowany przycisk
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
MateuszRyaN
Witam, mam pewien problem.
PHP z bazy generuje mi pewne dane, w ostatniej tabelce mam przycisk np. "Zakończ". Powiedzmy że tych przycisków wygenerowało mi 30.
każdy z nich wygląda tak:
  1. <a id="small_button3" rel="?action=close_project&id=1">Zakończ</a>
  2. <a id="small_button3" rel="?action=close_project&id=2">Zakończ</a>
  3. <a id="small_button3" rel="?action=close_project&id=3">Zakończ</a>
  4. <a id="small_button3" rel="?action=close_project&id=4">Zakończ</a>
  5. itd...

Po kliknięciu w dany przycisk, ma się otworzyć dialog box, w ktorym jest zapytanie czy na pewno chce zakończyć, jeśli TAK, z "rel" pobiera mi linka i na niego przenosi i wykonuje sie dalsza część skryptu.

Na chwile obecną wszystko jest OK na pierwszym wygenerowanym przycisku ;/ Na reszcie po kliknięciu nie ma w ogóle akcji. Podejrzewam, że trzeba zrobić jakąś pętle, coś tam kombinowałem ale nic mi nie wyszło.

Poniżej zamieszczam funkcję z dopisanymi komentarzami co za co odpowiada:
  1. $(function() {
  2. $( "#dialog:ui-dialog" ).dialog( "destroy" ); //dialog box nie aktywny
  3. $( "#dialog-confirm" ).hide(); // treść dialog boxa ukryta
  4. $("#small_button3").click( function() {
  5. $(this).addClass("for_dialog"); // do klikniętego small_button3 dodaje mi klase for_dialog
  6. var link = $("a.for_dialog").attr("rel"); // wyciąga mi wartość z "rel"
  7. $( "#dialog-confirm" ).dialog({
  8. resizable: false,
  9. height:140,
  10. modal: true,
  11. buttons: {
  12. "Tak": function() {
  13. $( this ).dialog( window.location.href = ''+link+'' ); // przenosi na link
  14. },
  15. "Nie": function() {
  16. $( this ).dialog( "close" ); // zamyka dialog
  17. }
  18. }
  19. });
  20. });
  21. });
  22. </script>
Rid
  1. <a id="small_button3" rel="?action=close_project&id=1">Zakończ</a>
  2. <a id="small_button3" rel="?action=close_project&id=2">Zakończ</a>
  3. <a id="small_button3" rel="?action=close_project&id=3">Zakończ</a><a id="small_button3" rel="?action=close_project&id=4">Zakończ</a>


Nadawanie tej samej nazwy id różnym tagom w formularzu jest jak najbardziej nieprawidłowe.Niech Pan pozmienia id tagów a na różne albo wogóle je usunie i doda do nich klasę.

  1. <a class="jakas_klasa" rel="?action=close_project&id=1">Zakończ</a>
  2. <a class="jakas_klasa" rel="?action=close_project&id=2">Zakończ</a>
  3. <a class="jakas_klasa" rel="?action=close_project&id=3">Zakończ</a>
  4. <a class="jakas_klasa" rel="?action=close_project&id=4">Zakończ</a>


  1. <script>$(function() { $( "#dialog:ui-dialog" ).dialog( "destroy" ); //dialog box nie aktywny
  2. $( "#dialog-confirm" ).hide(); // treść dialog boxa ukryta
  3. $(a.jakas_klasa).click( function() {
  4. $(this).addClass("for_dialog"); // do klikniętego small_button3 dodaje mi klase for_dialog
  5. var link = $("a.for_dialog").attr("rel"); // wyciąga mi wartość z "rel"
  6. $( "#dialog-confirm" ).dialog({
  7. resizable: false,
  8. height:140,
  9. modal: true,
  10. buttons: {
  11. "Tak": function() {
  12. $( this ).dialog( window.location.href = ''+link+'' ); // przenosi na link }, "Nie": function() {
  13. $( this ).dialog( "close" ); // zamyka dialog } } }); });});</script>
MateuszRyaN
Czyli mam rozumieć, że taki efekt jest dlatego że wartości id="small_button3" są wszędzie takie same? No i czy będzie różnica że operacja będzie wykonywała się tylko na klasach. W sensie... jakby było class="small_button3" a przy kliknięciu dodawało by mi id id="for_dialog", będzie to działać? ;/

Faktycznie działa, nie wiedziałem o tym że ustawienie id a class robi w takich przypadkach problemy. Dzięki śliczne za pomoc smile.gif
Rid
Cytat
Czyli mam rozumieć, że taki efekt jest dlatego że wartości id="small_button3" są wszędzie takie same?

Tak najprawdopodobniej to powoduje błąd.Może źle to wyjaśniam,ale to tak jakby wykonywał Pan operację w jq na trzech tych samych tagach jednocześnie.

Cytat
W sensie... jakby było class="small_button3" a przy kliknięciu dodawało by mi id id="for_dialog", będzie to działać? ;/


Niech Pan nie kombinuje z id tylko dodaje inną klasę.

No to fajnie,że działa specool.gif
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.