Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] Selektory jquery i ladowanie tresci
Forum PHP.pl > Forum > Przedszkole
Wolfie
Witam

Mam napisana taka funkcje w jQuery :

  1. $('a[href="projekty.php"]').click(function(){
  2. $('#content_bottom').load('projekty.php', '', function() {
  3. $(this).hide().fadeIn('slow');
  4. });
  5. $('#foto').load('proj_gal.php', '', function() {
  6. $(this).hide().fadeIn('slow');
  7. });
  8. return false;
  9. });


I tutaj wszystko pieknie chodzi, wiec postanowilem zbudowac analogiczna funkcje w ten sposob :

  1. $('#data').click(function(){
  2. $('#foto').load('akt_gal.php', '', function() {
  3. $(this).hide().fadeIn('slow');
  4. });
  5. return false;
  6. });


No ale niestety w tym przypadku funkcja nie dziala, zas div ma poprawnie zdefiniowane id :

  1. for($i = 0; $i < $count; $i++) {
  2. echo '<div id="data" value="'.$rows[$i]['dir'].'"><a href="#">'.$rows[$i]['date'].' : '.$rows[$i]['title'].' - '.$rows[$i]['text'].'</a></div>';
  3. }


Dlaczego to nie dziala ?
erix
A konsola błędów coś pokazuje?
Wolfie
Chcialbym zeby pokazywala, ale niestety, pustka, zadnych komunikatow .....

Probowalem dodawac klasy, albo wybierac na podstawie div lub tagu 'a' ale to samo, zadnej reakcji ze strony konsoli ani stronki....

Nie wiem czy to ma znaczenie, ale ten div o id="data" jest wewnatrz 4 innych div'ow. Kazdy kolejny jest 'opakowaniem' dla poprzedniego......
erix
  1. for($i = 0; $i < $count; $i++) {
  2. echo '<div id="data"

Zacznijmy od tego, że ID ma byc unikalne w całym dokumencie...
Wolfie
Ok, zamenilem id na class i bez zmian, nic w konsoli, nic na stronce....

zas jQuery zaczalem tak zeby nie bylo winksmiley.jpg

  1. $('div.data').click(function(){
batman
  1. $("div.data a").

Zapomniałeś o dodaniu znacznika a.
Wolfie
Cytat
Zapomniałeś o dodaniu znacznika a.



To akurat moim zdaniem nie ma wiekszej roznicy, przeciez niewazne czy klikne na div czy na znacznik to jest praktycznie to samo,

Mimo wszystko nawet po dodaniu 'a' nic sie nie dzieje.....
batman
Cytat(Wolfie @ 17.09.2009, 19:10:57 ) *
To akurat moim zdaniem nie ma wiekszej roznicy, przeciez niewazne czy klikne na div czy na znacznik to jest praktycznie to samo,

Mimo wszystko nawet po dodaniu 'a' nic sie nie dzieje.....

Ma znaczenie i to ogromne. Chociażby dlatego, że this odwołuje się do innego obiektu.

Skoro nadal nie działa, to sprawdź, czy nie masz błędów - co pokazuje się w konsoli błędów?
vokiel
A zobacz tak:
  1. for($i = 0; $i < $count; $i++) {
  2. echo '<div class="data" rel="'.$rows[$i]['dir'].'"><a href="#">'.$rows[$i]['date'].' : '.$rows[$i]['title'].' - '.$rows[$i]['text'].'</a></div>';
  3. }


[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function(){
  2. $("div.data a").click(function(e){
  3. e.preventDefault();
  4. alert($(this).parent('div.data').attr('rel'));
  5. });
  6. });
[JAVASCRIPT] pobierz, plaintext
Wolfie
vokiel to dziwne ale Twoj przyklad tez nie dziala, a juz myslalem ze to bedzie przelom winksmiley.jpg,nic tez nie zwraca konsola

batman w konsoli nic sie nie pokazuje.....


Dodam ze ten div ktorego klikniecie ma zaladowac plik do innego diva jest tez ladowany za pomoca ajax, moze to ma jakis wplyw ? Bo jak patrze do zrodla strony to nie ma tej czesci ktora zawiera div z class="data".......


tutaj probka kodu ze zrodla :

  1. <div align="center">
  2. <div id="top">
  3. <div id="naglowek">Nagłówek szablonu</div>
  4.  
  5. <div id="foto">Foto</div>
  6. <div id="rama">
  7. <div id="TRESC"><div id="content_bottom"></div>tu powinien byc div o klasie 'data'</div>
  8. </div>


W kodzie tym jest div o id="content_bottom" i to do tego diva jest ladowany div ktory posiada klase 'data' a jak widac przez to - jak podejrzewam - ze ladowany jest przez ajax brakuje go w zrodle strony
batman
Wystaw to gdzieś na świat, by można było zobaczyć na żywo. Teraz za wiele nie da się zrobić.
Wolfie
Ok, wystawiam na chwile

Mozna zobaczyc to tutaj

Cala rzecz dzieje sie po wejsciu w aktualnosci (trzeba poczekac az zaladuje sie menu), widac tam div-y z klasa 'data', nawet nie maja zbyt wiele styli wiec wygladaja jak linki
erix
Prawdopodobnie wszyscy roztrzaskują się o firewalla...
Wolfie
Firewall jest wyłączony...

Wszystkich ktorzy raz probowali prosze jeszcze raz, napewno teraz dziala .... boj blad.....
batman
No i się zagadka rozwiązała. Linki, do których chcesz przypisać zdarzenie onclick ładujesz ajaxem. A obsługa tych zdarzeń zapisana jest w pliku js dołączonym do głównej strony. Jeśli to ma zadziałać, to musisz zamiast click(function() { ... }) użyć live("click", function() { ... }). Oczywiście w miejsce kropek musisz wstawić swoją treść.
Wolfie
Ok , swietnie, teraz dziala, tylko ze tak naprawde to ja chcialem zeby ten div ladowal sie nie na zdarzenie 'click' tylko na 'hover' a z tego co widze .live() nie obsluguje 'hover' worriedsmiley.gif

---------------------------------

obsluguje mouseover, ale kiedy najezdzam zbyt szybko na kolejne div-y cala stronka sie rozjezdza i miga
vokiel
Obsługuje mouseover to i też mouseout
Na zdarzenie mouseout możesz zatrzymać akcję ładowania div'a
Wolfie
A moglbys mi podpowiedziec w ktorym miejscu powinienem uzyc stop() ? jquery znam od 2 tyg dopiero winksmiley.jpg

No i jeszcze takie pytanko, w funkcji load mam puste miejsce :

  1. $('#foto').load('akt_gal.php', '', function() {


Czy jesli wstawie tam :

  1. $(this).parent('div.data').attr('rel')


To do skryptu akt_gal.php zostanie przekazany atrybut rel a jezeli tak to jaka metoda ?
erix
Cytat
Obsługuje mouseover to i też mouseout

mouseenter/mouseleave jak już.
Wolfie
U mnie dziala na mouseover i maouseout, mozna prosic o mala podpowiedz jak zatrzymac load na mouseout/mouseleave winksmiley.jpg ?
vokiel
Manual, trzeba tam zajrzeć raz, ale tak porządnie, i przejrzeć wszystkie funkcje/metody. Po tym będzie Ci świtało w głowie, że gdzieś tam, coś takiego chyba było...

Poza tym na szybko polecam jquery cheatsheet

O ile dobrze kojarzę, będziesz musiał zastąpić load() funkcją ajax.
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.