Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> brak dostępu do elementu DOM po append()
john_doe
post 19.03.2018, 14:36:08
Post #1





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

Ostrzeżenie: (0%)
-----


Cześć,

mam dwie tabelki. Przerzucam wiersz z jednej do drugiej -> o tym była mowa TUTAJ
W tej drugiej tabelce dodałem przycisk, którym wyzwalam bootstrap modal i przenoszę na niego jedną wartość do forma w taki sposób
  1. $('#fatteningElements').on('click', '.edit-element', function(event) {
  2. event.preventDefault();
  3.  
  4. resetModalFormErrors( '#quantity-form' );
  5.  
  6. var positionId = $(this).attr('data-id');
  7. var quantity = $.trim($(this).closest('tr').find('.quantity').html());
  8.  
  9. $('input[name="id"]').val(positionId);
  10. $('#quantity').val(quantity).attr('max', quantity);
  11. $('#quantity').focus();
  12.  
  13. });


klikam w submit

  1. $('#quantity-form').on('submit', function (e) {
  2. e.preventDefault(e);
  3.  
  4. var url = $( this ).attr('action');
  5. var $form = $( this );
  6.  
  7. $.ajax({
  8.  
  9. type: "post",
  10. url: url,
  11. data: $(this).serialize(),
  12. success: function (data) {
  13. var row = $('#fatteningElements').find($('#fatteningelements_async_content tr[data-row="'+data.id+'"]')); // I TUTAJ JEST KICHA, NIE MOGĘ TEGO W TEN SPOSÓB ZNALEŹĆ
  14. row.find('.quantity').text(data.quantity);
  15. }
  16. })
  17. });


kiedy wyświetlę tą tabelkę prosto z bazy powyższy kod na sumbit działa. Generalnie co się źle dzieje? Po submicie update leci ładnie do bazki ale chce tą wartość w komórce nadpisać tą nową.

wrzuce jeszce html tej tabelki
  1. <table id="fatteningElements" class="table m-table--head-no-border table-hover m-table table-responsive">
  2. <tr>
  3. <th>List</th>
  4. <th>Ilość</th>
  5. <th>Akcje</th>
  6. </tr>
  7. </thead>
  8. <tbody id="fatteningelements_async_content">
  9.  
  10. <tr data-row="56">
  11. <td><i class="fa fa-mars"></i> BUT 6</td>
  12. <td class="quantity">1</td>
  13. <td>
  14. <a href="#" class="btn btn-success m-btn m-btn--icon btn-sm m-btn--icon-only edit-element" data-toggle="modal" data-target="#m_modal_quantity" data-id="56">
  15. <i class="la la-edit"></i>
  16. </a>
  17. <a href="#" class="btn btn-danger m-btn m-btn--icon btn-sm m-btn--icon-only delete-element" data-id="56">
  18. <i class="la la-trash"></i>
  19. </a>
  20. </td>
  21. </tr>
  22. <tr data-row="71">
  23. <td><i class="fa fa-venus"></i> BUT 7</td>
  24. <td class="quantity">12</td>
  25. <td>
  26. <a href="#" class="btn btn-success m-btn m-btn--icon btn-sm m-btn--icon-only edit-element" data-toggle="modal" data-target="#m_modal_quantity" data-id="71">
  27. <i class="la la-edit"></i>
  28. </a>
  29. <a href="#" class="btn btn-danger m-btn m-btn--icon btn-sm m-btn--icon-only delete-element" data-id="71">
  30. <i class="la la-trash"></i>
  31. </a>
  32. </td>
  33. </tr>
  34.  
  35. </tbody>
  36. </table>


Ten post edytował john_doe 19.03.2018, 14:38:47
Go to the top of the page
+Quote Post
trueblue
post 19.03.2018, 14:50:40
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A co wyświetla console.log(data) zaraz przed tą "kichą"?


--------------------
Go to the top of the page
+Quote Post
markuz
post 19.03.2018, 14:51:34
Post #3





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Nie:
Kod
var row = $('#fatteningElements').find($('#fatteningelements_async_content tr[data-row="'+data.id+'"]'));

A:
Kod
var row = $('#fatteningElements').find('#fatteningelements_async_content tr[data-row="'+data.id+'"]');


--------------------
Go to the top of the page
+Quote Post
john_doe
post 19.03.2018, 15:40:03
Post #4





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

Ostrzeżenie: (0%)
-----


trueblue console.log(data) prawidłowo zwraca to co zwraca metoda po stronie serwera. Cały mój zmodyfikowany obiekt.
markuz - to nic nie zmienia

takie selector ma dokładni taki sam objaw
  1. var row = $('#fatteningElements tr[data-row="'+data.id+'"]');
Go to the top of the page
+Quote Post
markuz
post 19.03.2018, 15:43:40
Post #5





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


W takim razie w drzewie DOM nie ma tego obiektu lub data.id jest nieprawidłowe, spróbuj sobie to odpalić z poziomu konsoli przeglądarki. Sam selektor wygląda OK.


--------------------
Go to the top of the page
+Quote Post
john_doe
post 19.03.2018, 15:49:40
Post #6





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

Ostrzeżenie: (0%)
-----


zobacz robię to tak, że inicjalnie tabelka do której przerzucam dane jest wypełniana normalnie z serwera. Dalej gdy przerzucam wiersz leci ajax z insertem i append wiersza ( dla wizualności ) i teraz wklejam kod tabelki z narzędzi deweloperskich gdzie 1szy wiersz jest załadowany z serwera a drugi dynamicznie przez append

  1. <table id="fatteningElements" class="table m-table--head-no-border table-hover m-table table-responsive">
  2. <tr>
  3. <th>Rasa</th>
  4. <th>Ilość</th>
  5. <th>Akcje</th>
  6. </tr>
  7. </thead>
  8. <tbody id="fatteningelements_async_content">
  9. <tr data-row="74">
  10. <td><i class="fa fa-mars"></i> BUT 6</td>
  11. <td class="quantity">1</td>
  12. <td>
  13. <a href="#" class="btn btn-success m-btn m-btn--icon btn-sm m-btn--icon-only edit-element" data-toggle="modal" data-target="#m_modal_quantity" data-id="74">
  14. <i class="la la-edit"></i>
  15. </a>
  16. <a href="#" class="btn btn-danger m-btn m-btn--icon btn-sm m-btn--icon-only delete-element" data-id="74">
  17. <i class="la la-trash"></i>
  18. </a>
  19. </td>
  20. </tr>
  21. <tr data-row="44"> <!-- ten jest zapendowany, dla 1szego kody js`owe działaja a dla tego nie :(
  22. -->
  23. <td><i class="fa fa-venus"></i> CONVERTER </td>
  24. <td class="quantity">20</td>
  25. <td><a href="#" class="btn btn-success m-btn m-btn--icon btn-sm m-btn--icon-only edit-element" data-toggle="modal" data-target="#m_modal_quantity" data-id="75"><i class="la la-edit"></i></a> <a href="#" class="btn btn-danger m-btn m-btn--icon btn-sm m-btn--icon-only delete-element" data-id="75"><i class="la la-trash"></i></a></td>
  26. </tr>
  27. </tbody>
Go to the top of the page
+Quote Post
trueblue
post 19.03.2018, 16:26:22
Post #7





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


W wywołaniu ajax'owym powyżej nie robisz append. Możesz gdzieś indziej i najzwyczajniej później niż próbujesz znaleźć szukany wiersz.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.04.2024 - 10:51