ďťż
Podstrony
|
telcocafeWczoraj 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 |
|||
Sitedesign by AltusUmbrae. |