Wydaje mi się, że wywoływanie za każdym razem funkcji z serwera to będzie sieczka dla wydajności.
Już opisuję szerzej problem. Ostatni mój temat dotyczył problemu poprawnego interpretowania zdarzenia onmouseout. Gdy div miał wewnątrz diva z tabelą z ikonami poruszanie kursorem w obrębie diva wywoływało nieproszenie funkcję onmouseout. Napisałem sobie funkcje, która ma sprawdzać położenie kursora względem diva. Jeżeli kursor znajduje się w obrębie diva z ikonami ma go nie chować.
Mamy tabelę z listą dodanych kategorii. Po prawej stronie od każdego rekordu do tej pory była lista ikon funkcyjnych (dodaj, usuń, przesuń w górę itp.). W momencie kiedy tych ikon zaczęło przybywać, ergonomia obniżała się. Wpadłem na pomysł, by stworzyć jedną ikonę, która po umieszczeniu na niej kursora myszy pokazywałaby po lewej stronie od niej ikony funkcyjne dotyczące danej kategorii. Tutaj wszystko działa poprawnie.
Mam taką funkcję:
function narzedzia_schowaj ( id )
{
this.id = id;
var pozycja = findPos($('narzedzia_ikony_' + id));
var szerokosc = $( 'narzedzia_wnetrze_' + id ).offsetWidth;
var wysokosc = $( 'narzedzia_wnetrze_' + id ).offsetHeight;
var poczatek_x = pozycja[0];
var koniec_x = pozycja[0]+szerokosc;
var poczatek_y = pozycja[1];
var koniec_y = pozycja[1]+wysokosc;
if ( tempX < poczatek_x || tempX > koniec_x || tempY < poczatek_y || tempY > koniec_y )
{
mint.fx.Fade( 'narzedzia_ikony_' + id, 0, 30, 400 );
czas_ukrywania_narzedzi = setTimeout ( "$('narzedzia_ikony_' + id).style.display = 'none';", 600 );
}
else
{
setTimeout("narzedzia_schowaj ( id ) ", 200);
}
}
Zdarzenie onmouseout wywoływane jest czasem na ostatnim pikselu poza elementem podczas zdejmowania kursora z diva. W związku z tym jest timeout, który sprawdza, czy faktycznie kursor jest poza divem. W ten sposób ikonki znikają tylko wtedy, gdy kursor fizycznie znajduje się poza ich obszarem.
W momencie kiedy operuję na jednej ikonie tzn. umieszczam na niej kursor po czym go zdejmuję wszystko działa poprawnie.
Całość wyświetlana jest w liście (kategoria pod kategorią itd.). Tak więc ikony są w kolumnie pod sobą. Kiedy przejadę kursorem wzdłuż ikon z pierwszej szybko na drugą, a potem na trzecią i potem dopiero zdejmę kursor myszy z ikony trzeciej, funkcja znikania ikon wywoływana jest tylko dla tej ostatniej.
Wygląda to tak jakby funkcja mogła być używana jednocześnie w jednym czasie tylko raz. Kiedy przed jej zakończeniem wywoływana jest drugi raz, pierwsze wywołanie zostaje anulowane.
@revyag
No niby tak tylko rzecz polega na tym, że te obiekty miałyby być tworzone z automatu dla nieograniczonej ilości elementów generowanych dynamicznie, a nie dla jednego konrketnego...