Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: DOM 'live/delegate/click'
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
matrik
Witam
Dlaczego live nie zawsze chce działać?
Dlaczego delegate działa i nie działa dla elementów które są generowane przez jQuery?
Click... jakby nie mogło istnieć

Live powinno działać jeśli element jest w pamięci jQuery,
Delegate też różnie działa ...

O co biega? haha.gif
Nie znalazłem dobrego POLSKIEGO tutoriala z wytłumaczeniem kiedy i gdzie się stosuje live/delegate.

Zna ktoś coś podobnego do livequery tylko, że dla wersji jQuery 1.4.2?

Pozdro
nospor
To moze napisz w jakim przypadku ci nie dziala to LIVE to pogadamy inaczej smile.gif
matrik
1. Jest link <a href="" id="load">Załaduj</a> - klikam (delegate)
2. poprzez zdarzenie click pobieram ajaxem zawartosc <div id="send_form_0">formularza</div> - wysłanie live>submit
żadnych błędów w firebugu, nie wysyła się, a strona sie przeładowywuje, w zdarzeniu dalem return false; co powinno zapobiec przeladowaniu sie strony


jest jeszcze jeden problem dotyczący tego tematu
jak kontynuować pętle each jeśli elementy zostały załadowane przez jQuery?
vokiel
Aby link nie przenosił do strony należy przechwycić ten event. Czyli:
[JAVASCRIPT] pobierz, plaintext
  1. $('a').click(function(event){
  2. event.preventDefault();
  3. });
[JAVASCRIPT] pobierz, plaintext


Poza tym, reszta tego co napisałeś jest na tyle niezrozumiała, że nie wiem jak tu pomóc. Wiem, że masz w głowie cały problem, jednak my przy tym kodzie nie siedzimy i nie wiemy co masz na myśli, musisz to otwarcie napisać, a nie półsłówkami, skrótami.
devnul
Cytat
jak kontynuować pętle each jeśli elementy zostały załadowane przez jQuery?
jeśli dobrze rozumiem zamiary to się nie da, musisz na nowo załadowanych elementach na nowo polecieć eachem
matrik
Ja wiem, że nie jest łatwo zrozumieć to co napisałem, ale to samo będzie jak wytnę kod, który chce omówić tongue.gif

Po prostu nie wiem jak wykorzystać live/delegate dla tego co jest generowane przez jQuery

$('#element').live('click',function(){
//my code
});

$('body').delegate('#element','click',function(){
//my code
});
devnul
wszystko masz w dokumentacji, czegoś konkretnego nie rozumiesz? bo jeśli coś robisz źle to niestety nikt się tutaj nie domyśli co takiego źle robisz
matrik
hmm, live działa tylko dla tych elementów, które nie zostały dodane do drzewa DOM?

Szukam rozwiązania, które by nie stawiało problemów wytyczenia czy element istnieje w drzewie DOM. Najlepszym przykładem tego było livequery dla wersji jQuery 1.3.x
A więc, powinno być dla mnie obojętne czy tag jest czy go nie ma, a pamięć podręczna jQuery i pmięć przeglądarki była jednym tym samym - jedną warstwą, a nie dwoma oddzielnymi, co komplikuje działanie kodu, ułatwiło by to sprawność, s powodu, przeróżnych funkcjonalności/uniwersalności kodu jquery.

Z dokumentacji korzystam jak najbardziej tongue.gif. Ale czasami i to nie wystarcza, jeśli się nie zna samemu wszystkiego i nie wie czego szukać.
vokiel
Cytat(matrik @ 27.09.2010, 19:00:47 ) *
hmm, live działa tylko dla tych elementów, które nie zostały dodane do drzewa DOM?

Live działa dla wszystkich, które są +dla tych, które się pojawią w przyszłości.
matrik
Daje demo, kawałka kodu.
O co chodzi?
W rozwijanym menu nie działa live click. zresztą link do demo.
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.