ďťż

Problem z przetwarzaniem tagow przez jQuery

       

Podstrony


telcocafe

Wczoraj po przeczytaniu jednego z tutoriali jQuery zabralem sie za kodowanie bo spodobal mi sie ten mechanizm. Po paru godzinach kodzenia natknolem sie na nietypowy problem.

Powiedzmy ze mamy dwa pliki

plik d.html :

<html> <head> <title>Przykład 1-1</title> <script type="text/javascript" src="./JQ.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('#111 .b').click(function(){ $('#111').load('z.html'); }); $('#222 .c').click(function(){ alert('cos tam'); }); }); </script> </head> <body> <p id="111"> <a class="b">klasa b</a> </p> <p id="222"> <a class="c">klasa c</a> </p> </body> </html>

oraz plik z.html
<p id="222"><a class="c">klasa c</a></p>
Problem polega na tym ze po wczytaniu pliku z.html do tagu <p id="111"> wpisany tag nie jest oblsugiwany przez jQuery. W pliku glownym (d.html) jest identyczny tag jak z pliku z.html i jest on caly czas obslugiwany przez jQuery.

Czy wie ktos dlaczego to nie dziala i jak poradzic sobie z takim problemem?

Z gory dzieki.
Użytkownik butterflydaniel edytował ten post 23 styczeń 2009, 01:10


Z tego co pamiętam, to id nie może zaczynać się od liczby...

Dzieki za pomoc.
Udalo mi sie juz rozwiazac ten problem. Najlepiej uzyc do tego LiveQuery.

Jako rozwiazanie z uzyciem LiveQuery podam troche rozszerzana wersje mojego problemu.

Rozszerzenie problemu polega na tym ze po nacisnieciu <a class="c">klasa c</a>
powinien zmienic sie na <a class="b">klasa b</a> i vice versa przez caly czas urzytkowania. Aby dzialalo to poprawnie musialem pozbyc sie powtarzajacych tych samych id z tagu <p>

Oto rozwiazanie z urzyciem LiveQuery

Plik d.html :
<html> <head> <title>Przykład 1</title> <script type="text/javascript" src="./JQ.js"></script> <script type="text/javascript" src="./jquery.livequery.js" charset="utf-8"></script> <script type="text/javascript"> $(document).ready(function(){ var b = function(){ var id = '#'+$(this).parent().attr("id"); $(id).load('b.html'); return false; }; var c = function(){ var id = '#'+$(this).parent().attr("id"); $(id).load('c.html'); return false; }; $('.c').livequery('click', B); $('.b').livequery('click', c); }); </script> </head> <body> <p id="111"> <a class="b">klasa b</a> </p> <p id="222"> <a class="c">klasa c</a> </p> </body> </html>

Plik b.html
<a class="b">klasa b</a>

Plik c.html
<a class="c">klasa c</a>

Dodatkowo uzylem "var id = '#'+$(this).parent().attr("id");" zeby pokazac w jaki sposob odnosic sie do id gdy nie jest on znany (np; wygenerowany przez php z danych pobranych z bazy danych)

Btw id moze byc liczba.

Pozdrawiam

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.