Mam nastepujacące dwie funkcje jQuery:
$(document).ready(function() { $("#menu").find('a').live("click",function() { $('body').load("index.php", {'mailbox': $(this).attr('value'), 'controller' : 'mailbox', 'action' : 'mailbox'}); }); $(".message").find('label').live("click",function() { $('#messages').load("index.php", {'id' : $(this).find('input').val(), 'controller' : 'mailbox', 'action' : 'message', 'repeat' : 'yes'}); }); });
No i nie rozumiem tutaj jednej rzeczy.
Jak widac konstrukcja tych funkcji jest praktycznie identyczna, tylko ze w pierwszej slowko $(this) odnosi sie do $('#menu).find('a') a w drugiej slowko this odnosi sie do $('#messages'), tak przynajmniej wynika z tego co wywnioskowalem w czasie prob, bledow i testowania.
Od razu zatrzymam sie na chwile przy drugiej funkcji, obsługuje ona taki kod (a raczej powinna obslugiwac bo nie dziala tak jak powinna - zaraz wytlumacze dlaczego) :
No wlasnie, druga funkcja powinna analogicznie do pierwszej zwracac mi value dla inputa, ale tego nie robi, wlasnie dlatego ze slowko $(this) - z tego co mi sie wydaje - odnosi sie tutaj nie do $(".message").find('label') - jakby wynikalo z analogii do pierwszej funkcji - lecz odnosi sie do $('#messages') i przez to nie moge wyciagnac atrybutu value.
Moze ktos mi wytlumaczyc ten fenomen ?
Dlaczego w pierwszej i drugiej funkcji - choc zbudowanie prawie identycznie - $(this) odnosi sie do roznych czesci ?