Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jquery, css i ajax jak to pogodzić.
Forum PHP.pl > Forum > Po stronie przeglądarki
Mayka
Mam taki problemik, mianowicie mam sobie stronke na której jest sobie menu, i w zależnosci od tego co jest kliknięte, zasysam ajaxem do <div id="tresc"> potrzebną treść stronki, ale teraz mam problem z jquery i cssem, bo w pliku głównym mam <head> i <body> i style i dołączane wszystko ale w tym co jest treścia już jest bezpośrednio jakis tam sobie tekst, ale tu potrzebuje css i jquery i menu w jquery, można to jakoś pogodzić ? Bo teraz w fireBugu wywala że niema danego diva (no bo go niema puki sie nie wciśnie czegoś na menu) i niewiem co z tym zrobić.. Ma ktoś jakiś pomysł na to ? Bo <html> w <html> to chyba nie koniecznie.. ?
Divinity
Nie wiem czy dobrze zrozumiałem to co napisałaś, ale jeżeli chodzi o to, że chcesz przypisywać zdarzenia dla elementów DOM, które zostaną dopiero załadowane AJAXem (mam nadzieję, że o to chodzi) to użyj delegacji zdarzeń. Zerknij do dokumentacji jQuery na metody delegate() i on().

:]
viking
Napisz to jeszcze raz po naszemu. Skoro masz styl dołłączony to wszystkie elementy dodane później będą ten styl miały.
Chyba że chcesz zdarzenia to jQuery, zdarzenia - zastąpienie $.bind, $.delegate i $.live metodą $.on
Mayka
Zagmatwałem niesamowicie.. wiec inaczej.
-Jest strona na której mamy menu, ( poprostu index a w nim wszystkie dołączenia jquery, css itp)
-w menu klikamy sobie "edytuj" i otwiera nam sie w <div id="content"></div> edycja
-w tej podstronie jest sobie jakis form, (tak luzem stronka edycja.html zawiera odrazu <form> bez wstępnych żadnych znaczników), FCKeditor i pare innych pierdół i teraz to nie działa, znaczy wygląda tak jak by nie widziało stylów, jquery i wogole niczego..

Np. błąd z firebug'a : [CKEDITOR.editor.replace] The element with id or name "tresci" was not found. - bo treści jest dopiero w pliku edycja.html..

Może teraz prosciej wink.gif
d3ut3r
To zależy od sytuacji, style trzymaj w nadrzędnym dokumencie (czyli tam gdzie masz obsługę menu), FCK Editor musisz zainicjować po wczytaniu diva z textarea, w jquery jeżeli chcesz obsłużyć zdarzenie na elemencie nowym (wczytanym przez ajax) to tak jak napisano wyżej poczytaj w dokumentacji o metodzie .on()
Mayka
Cytat(d3ut3r @ 12.11.2012, 15:00:36 ) *
To zależy od sytuacji, style trzymaj w nadrzędnym dokumencie (czyli tam gdzie masz obsługę menu), FCK Editor musisz zainicjować po wczytaniu diva z textarea, w jquery jeżeli chcesz obsłużyć zdarzenie na elemencie nowym (wczytanym przez ajax) to tak jak napisano wyżej poczytaj w dokumentacji o metodzie .on()


No to wszystkie style i pliki od fckeditora są inicjowane w pliku index, w takim razie zabieram się za lekturę, a co z css'em ?

edit, dodawanie tego jest w ten sposób , to co mam tu dopisać ? :
bo wg tego co dał wiking to jest prawie dobrze tylko nie bardzo wiem jak "doładować to czego brakuje" ?

$("#pages-wrapper").delegate("a","dblclick", function(e) {
var href = $(this).attr('href');
$('#conte').load(href);
return false;
});

nikt nie podpowie ?
thek
To ja może dodam byś się powoli przestawiał już na używanie $.on i $.off gdyż standaryzują one obsługę eventów i pozostałe metody ustawiły w sumie jako deprecated. Dodatkowo udostępniają one już przestrzenie nazw, co także jest fajną właściwością.

Codo css, to on akurat wystarczy że jest wpięty do strony a wszystkie, nawet dopiero mające się pojawić elementy - obejmie. No chyba że jakieś cuda zaczniesz robić z dynamicznym dołączaniem styli już po załadowaniu strony. Wtedy faktycznie możesz mieć problemy z prawidłowym działaniem. Ale jeśli wszystkie style masz w head od samego początku, to stylami w zasadzie nie musisz się przejmować.
Mayka
No to ja niewiem, na kilku stronach własnie kazali tego delagate używać bo "odwołuje się bezpośrodeni od rodzica".. To teraz już niewiem której używać..
Tylko teraz pytanie jak powiedzieć "rodzicowi" że już jestem i można te 2 skrypty załadować ?

No i czytanie dokumentacji pomogło poraz kolejny..

wywaliłem return false z tej formułki delegate i działa, fckeditora można ładować razem z polem tetarea wiec to też załatwiło moj problem, Tylko teraz z tymi zakładkami mam taki problem:
TypeError: $(document).ready(function () {$("#content div").hide();$("#tabs li:first").attr("id", "current");$("#content div:first").fadeIn();$("#tabs a").click(function (e) {e.preventDefault();$("#content div").hide();$("#tabs li").attr("id", "");$(this).parent().attr("id", "current");$("#" + $(this).attr("title")).fadeIn();});}) is not a function


Skrypcik wygląda tak:
  1. $(document).ready(function() {
  2. $("#content div").hide(); // Initially hide all content
  3. $("#tabs li:first").attr("id","current"); // Activate first tab
  4. $("#content div:first").fadeIn(); // Show first tab content
  5. $('#tabs a').click(function(e) {
  6. e.preventDefault();
  7. $("#content div").hide(); //Hide all content
  8. $("#tabs li").attr("id",""); //Reset id's
  9. $(this).parent().attr("id","current"); // Activate this
  10. $('#' + $(this).attr('title')).fadeIn(); // Show content for current tab
  11. });
  12. })();


Mogłby mi ktoś powiedzieć o chodzi ? Bo działa.. ale cos wywala...
viking
Sensem artykułu który Ci podlinkowałem było - nie używać delegate bo od 1.7 jquery istnieje $.on() które należy teraz stosować wszędzie gdzie to możliwe. Delegate,bind i live są przestarzałe. Co było nie oczywiste? Wywal z linii 12 })->>();
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.