Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery]Usówanie wszystkiego w danym divie
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
fire_dept
Witam,

Mam problem nie wiem jakiej funkcji użyć.

Mam menu napisane w php które generuje od razu cały kod html

  1. <ul>
  2. <li>menu [e]</li>
  3. <li>menu [e]</li>
  4. <ul>
  5. <li>menu 2 [e]</li>
  6. </ul>
  7. </li>
  8. <li>menu [e]</li>
  9. </ul>


[e] po kliknieciu pojawia sie formularz z zaladowanymi danymi do edycji
przy aktualizacji z poziomu panelu administratora wszystko dzieje sie poprzez AJAXA
przy pomocy funkcji

  1. $('#id').remove();
  2. $('#id').empty();
  3. $('#id').html();


usuówam wszystko co znajduje sie w danym divie czyli cale w/w menu
później za pomoca funkcji get laduje spowrotem zaktualizowane menu

  1. $.get()


i wszystko wygląda jak należy, ale przez używanie funkcji remove czy empty wywalam wszystko z drzewa html
i po ponownym zaladowaniu kod wyglada tak jak przed usunięciem a mimo to klikajac w literke e nic sie nie dzieje
tak jakby jquery nie widzialo nowo zaladowanego elementu.

Ma ktoś jakieś pomysły ?

pobieram z bazy nowe zaktualizowane menu
daWeb
Jak rozumiem menu jest na ajaxie, czyli wcześniej musiały zostać nadane eventy na listę, jeżeli zostały przypisane do konkretnych tagów listy, to po usunięciu i aktualizacji menu nie będzie działać.
aniolekx
Cytat(daWeb @ 30.01.2015, 10:37:01 ) *
Jak rozumiem menu jest na ajaxie, czyli wcześniej musiały zostać nadane eventy na listę, jeżeli zostały przypisane do konkretnych tagów listy, to po usunięciu i aktualizacji menu nie będzie działać.


i tu ważne jest aby wiedzieć jaka jest różnica miedzy bind() i live()
daWeb
Cytat(aniolekx @ 30.01.2015, 10:47:38 ) *
i tu ważne jest aby wiedzieć jaka jest różnica miedzy bind() i live()


Wszystko zależy jakiej wersji jQuery się używa, a według mnie problem leży w delegacji zdarzeń, bo samo użycie on(), bind() nie rozwiąże problemu.
fire_dept
Witam
Znalazłem rozwiązanie.
Przepraszam, jeżeli wkleiłem za mało kodu bo na to wygląda.

Rozwiązanie jeżeli ktoś kiedyś miałby problem.

mam link <a class="openid open-1" href="#">[e]</a>

po kliknięciu pojawia się formularz i za pomoca $.get ściągane są z php mysql dane do formularza który uzupełnia się i pojawia automatycznie
  1. $('.optedit').on('click', function() {
  2. var menu_id = $(this).attr('class').split('-');
  3. var res;
  4.  
  5. $.get('admin_index.php?id=get_menu_edit&mid='+menu_id[1], function(data) {
  6. res = data.split('||');
  7. $('#title-to-hide').slideUp();
  8. $('#link_name').val(res[2]);
  9. $('#link_title').val(res[3]);
  10. $('#mid').val(res[1]);
  11. )};
  12. )};


po wyslaniu formulatrza

  1. $('.form').submit(function(event) {
  2.  
  3. var $form = $(this);
  4. var $inputs = $form.find("input, select, button, textarea");
  5. var serializedData = $form.serialize();
  6.  
  7. request = $.ajax({
  8. url: "check.php?id=update_menu",
  9. type: "post",
  10. data: serializedData
  11. });
  12. request.done(function (response, textStatus, jqXHR){
  13. $('#main_menu').empty();
  14. $.get('admin_index.php?id=get_menu', function(data) {
  15. $('#main_menu').append(data);
  16. )}
  17.  
  18. )};


rozwiązanie było proste opakowałem w funkcje pierwszą część kodu funkcja update_menu()
i po $('#main_menu').append(data); powtórzyłem ją do aktualizacji elementów DOM i działa
Dzięki za pomoc i fatygę smile.gif

  1. $('#main_menu').append(data);
  2. update_menu();
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.