Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX, jQuery] Problem z wywołaniem JS z załadowanej przez AJAX treści
trol
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 25.04.2009

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


Witam,
od już kilkunastu prawie godzin walczę z czymś, mam na dzieję banalnym i nie mogę za sobie z tym poradzić. Otóż:

Mam stronę HTML:
[...]
<ul>
<li> tresc pierwotna, która potrafi wywołać funkcję </li>
<li> inna tresc pierwotna, która potrafi wywołać funkcję </li>
</ul>
<a href='#'>Wywołuje AJAX</a>
[...]
Mój kod jQuery obsługuje kliknięcie na zawartość każdego taga <li></li> i to działa bez zarzutu (wywołuje inną fukncję jQuery, która coś tam sobie robi). Natomiast jeżeli wywołam działanie AJAX`a poprzez kliknięcie na link "Wywołuję AJAX", które usuwa dotychczasowe tagi <li></li> wewnątrz tagu <ul> </ul> i wprowadza tam nowe tagi <li></li> np. <li> zawartość zwrócona przez AJAX</li> to te nowe tagi zdają się być "odporne" na moje klikania - nie chcą wcale współpracować z kodem jQuery.

// Moje kombinowania //
wstawiłem do index kod js

function triggerRightMenu()
{
alert('test');
}

a wstawiane przez ajaxa tagi wzbogaciłem o coś takiego <li><a href='#' onclick='triggerRightMenu()'> tresc AJAX`owa</a> </li>. Niestety alert się nie wywołuje...
Natomiast w sytuacji kiedy AJAX zwraca <li><a href='#' onclick='alert('test');'> teraz tutaj alert działa </a> </li>. Nie trudno się wobec tego skapnąć, że załadowana treść AJAXA "nie widzi" kodu z pozostałej strony. Schematycznie ujmując

| cała strona
|
| kod jQuery (...) - 1
|
| |załadowana treść Ajax
| |
| | tutaj kod z 1 nie obsługuje tagów
|

Mam nadzieję, że czytelnie wyraziłem mój problem. Gorąco proszę o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nithajasz
post
Post #2





Grupa: Zarejestrowani
Postów: 230
Pomógł: 27
Dołączył: 27.05.2008
Skąd: Warszawa

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


Znam ten problem.. Miałem to samo ale wykombinowałem to trochę inaczej, a wręcz banalnie.

Tą swoją funkcje z alertem daj poza definicją jquery, tzn. bezpośrednio po <script> i dopiero po zamknięciu klamry tej funkcji deklaruj sobie co tam chcesz co ma być w $(document).ready. Oczywiście zdarzenia na elemencie onClick musisz dodać.

Nie wiem dlaczego nie łapie wcześniej zadeklarowanego kodu typu:

  1. $('element').click(function(){alert('cos');});


Co prawda i przy tym pokombinowałem troche i jak tworzyłem klikalne elementy ajaxem, to od razu tworzyłem do tego coś ala obsługę takiego linka. Nie mam kodu pod ręką ale wyglądało to mniej więcej tak :

  1. function buildLink(element, search, func)
  2. {
  3. $(element).find(search).each(function(i){
  4. $(this).click(function(){ func({id: $(this).attr('id')}); return false;});
  5. });
  6. }
  7.  
  8. // wywołanie po utworzeniu elementu
  9. buildLink('#element', '.jakas-klasa', funkcja-którą-odpala-link);


To już działa normalnie tak jak utworzone przy ładowaniu całej strony elementy. A dlaczego tak się dzieje to nie mam pojęcia. Jak dojdziesz czemu tak się dzieje możesz się podzielić wiedzą (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Edit:

Można i tak : [b]LIVE

Ten post edytował nithajasz 11.05.2009, 11:12:33
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 4.10.2025 - 11:44