Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery]Dodawanie nowych znaków HTML
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Fluke
Witam. Mam problem i nie wiem jak go przezwyciężyć.
Mam taki kod HTML:
  1. <ul>
  2. <a class="next">aaa</a>
  3. <a class="next">aaa</a>
  4. <a class="next">aaa</a>
  5. </ul>


I taki w jQuery:

  1. $('.next').click(function() {
  2. alert('noew aaaa');
  3. for(var i=0; i<2; i++){
  4. $('ul').html('<a class="next">noew aaa</a>');
  5. }
  6. });


Idea jest taka, że jak wcisnę jakiś aaa to ma dodać nowe aaa, spoko chodzi ale gdy wcisnę te nowe aaa już nic się nie dzieje. Sprawdzałem w chromie jak to wygląda w zbadaj element, i jest tak jak powinno być, czyli jest:
  1. <a class="next">noew aaa</a>

Ale jak nacisnę te nowe to już nic się nie dzieje, nawet komunikat nie wyskakuje.

Z góry dziękuję za pomoc. Pozdrawiam.
wookieb
1) w <ul> umieszcza się <li>
2) html ustawia taki html jaki podajesz, a skoro ustawiasz ciągle ten sam to tak wychodzi Zastosuje "append"

Poza tym pod nowo utworzone elementy nie są podpięte żadne zdarzenia więc nie kliknięcie na nie, zostanie obsłużone jako zwykły link a nie przez JavaScript.
Użyj live, albo pamiętaj o podpięciu zdarzenia.
Fluke
1) wiem, ale to tak na szybkiego.

Ale nie rozumiem czemu ma na działać jak działa takie coś:
  1. <p class="next">aaaa</p>
  2. <p class="next">aaaa</p>
  3. <p class="next">aaaa</p>
  4. <p class="next">aaaa</p>

Przy każdym się wywoła alert, ale jak dodatkowo dodamy następne to już nie.

Czym się różni tamto od tego:
  1. <p class="next">aaaa</p>
  2. <p class="next">aaaa</p>
  3. <p class="next">aaaa</p>
  4. <p class="next">aaaa</p>
  5. <p class="next">aaaa</p>
  6. <p class="next">aaaa</p>
  7. <p class="next">aaaa</p>

Więcej akapitów.

wookieb
To ze tamte elementy dodajesz dynamicznie?
A to
Kod
$('.next')

ZNajdujde elementy które są na stronie w momencie wykonania tej lini kodu, nie później, nie wcześniej.
Poznaj javascript, żebyś w przyszłości na pytanie "Czy znasz Javascript?" odpowies "jquery" co i tak będzie nieprawdą.
nospor
Jak już wspomniał wookieb, użyj LIVE w jquery - powstało właśnie po to by rozwiązywać problemy jak Twój

Ale ja w kwestii formalnej - przenoszę. Z ajaxem temat nie ma żadnego związku
Fluke
Właśnie rozwiązałem swój problem:) Trzeba to mniej więcej zrobić przez rekurencję.

A tak po za tym to mogę mieć idiotyczne pytania bo się uczę javascriptu i poznaję jQuery. Tylko że jQuery wydaje mi się duuużo łatwiejsze.
nospor
Rekurencja? Czy ty w ogóle czytasz co się do CIebie pisze? Użyj LIVE

http://api.jquery.com/live/
Fluke
Wiem, widziałem to, ale znalazłem też trochę inne rozwiązanie.

Ale przepraszam, rzeczywiście ten live jest moim rozwiązaniem.
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.