konto usunięte
Temat: [jQuery] zmiana wysokości - problem
Cześć,Postaram się najkrócej jak umiem.
Są dwa divy. Jeden nazywa się "gal" i w nim zmienia się treść, drugi nazywa się "bggal", jest większy od "gal", ma nadaną przezroczystość i służy jako ładny border. "Gal" nie ma ustalonej wysokości w css (=auto) więc dopasowuje się ona do treści która aktualnie jest w divie.
Kliknięcie na przycisk nr 1 powoduje wyświetlenie w "gal" treści i wtedy wysokość jaką "gal" osiąga jest równa 500px. Kliknięcie w przycisk nr 2 powoduje wyświetlenie większej objętościowo treści i wtedy wysokość jest równa 1000px.
"Bggal" zawsze ma wysokość równą "gal + 40px".
Problem:
Jak w zależności od wysokości "gal" zmieniać wysokość "bggal"?
Wymyśliłem więc taką konstrukcję:
$("#cośtam").click(function(){
wys = $("#gal").css("height");
wys = wys.slice(0,-2);
wys = parseInt(wys) + 40;
$("#bggal").css("height", wys);});
Całość działa idealnie pod warunkiem, że treści jest na tyle mało, że mieści się ona na jednym ekranie i nie trzeba przewijać. Problem pojawia się w momencie, kiedy treści jest za dużo na jeden ekran. Wtedy wysokość "bggal" zawsze jest mniejsza od "gal" o kilkadziesiąt px lub wynosi dokładnie tyle ile podczas wyświetlania tej krótszej treści. Podejrzewam, że ma to związek z szybkością wykonywania się skryptu.
Wymyśliłem więc, żeby powyższy kod wywalić do osobnej funkcji changeHeight() a w jego miejsce wstawić:
setInterval("changeHeight()",1);
Efekt? Nie pytajcie mnie dlaczego, ale działa (prawie) wyśmienicie. Prawie, dlatego że rodzi się problem z internet explorerem 7. Otóż kod funkcji wygląda tak:
function changeHeight(){
wys = $("#gal").css("height");
wys = wys.slice(0,-2);
wys = parseInt(wys) + 40;
[B]$("#bggal").css("height", wys);[/B]
}
Explorerowi nie pasuje $ w pogrubionej linijce. Pisze "invalid argument" i nie przestaje wykonywać skrypt.
Ściągnąłem ichni debugger, którego użycie skutkuje tym, że pokazuje mi gdzie jest błąd (w kodzie jquery.js) i zawiesza zarówno siebie jak i przeglądarkę.
Any ideas?