Niestety ale nie mam pojęcia jak zrobić taką funkcję, która z danego diva o danym id pobierze wartość atrybutu display, jak bym to już miał to później z if'em dał bym sobie chyba radę. No ale wykorzystałem już drugi sposób z jquery. Bardzo fajna sprawa - tylko miał bym kilka pytań.
1. Poprzednio działało to na zasadzie dwóch div'ów - header_add oraz content_add. W tym pierwszym był w tle ustawiony obrazek plusa, oraz przy użyciu onmouseover i onmouseout, po najechaniu na tego diva podmienił się obrazek tła na 'aktywnego' plusa. Po zjechaniu tło z powrotem się zmieniało na normalne - chyba że się najechało na diva content_add który się pojawiał dzięki najechaniu na header_add. Pewnie nikt tego bełkotu nie zrozumie, dlatego pokażę kod jakim to osiągnąłem:
W obu divach był taki kod:
onmouseover="add_on()" onmouseout="add_off()"
No i w pliku js funkcje:
function add_on() {document.getElementById("header_add").style.background='url(img/plus_active.png) left no-repeat';document.getElementById('content_add').style.display='block';}
function add_off() {document.getElementById("header_add").style.background='url(img/plus.png) left no-repeat';document.getElementById('content_add').style.display='none';}
Teraz moje pierwsze pytanie, czy, i jak, mogę połączyć powyższe funkcje, powyższą funkcjonalność, z już przerobionym kodem na:
<script>
$(document).ready(function() {
$("#header_add").click(function () {
$('#content_add').slideToggle('normal');
});
});
</script>
Próbowałem te kody wciskać w różne miejsca, ale jedynie co mi się udało, to przy kliknięciu dodać także tło 'aktywnego' plusa ( no i oczywiście wysuwanie/chowanie div'a - to działa ), tylko że niezbyt rozumiem działanie tych funkcji z jquery, dlatego też nie mam pojęcia co zrobić aby na kliknięcie powrotne, wraz ze zwijaniem, tło także wracało do zwykłej postaci.
2. Z tym jquery i rozwijaniem to bardzo fajny efekt, jak się domyślam to zasługa funkcji slideToggle. Czy oprócz niej w tym pliku są jeszcze jakieś inne metody pojawiania się czy rozwijania różnych rzeczy?
Częściowo sobie poradziłem dzięki
temu wpisowi, dokładnie w taki sposób:
$(document).ready(
function() {
$("#header_add").click(
function () {
$('#content_add').slideToggle();
$("#header_add").toggle(
function() { document.getElementById("header_add").style.background='url(img/plus_active.png) left no-repeat'; },
function() { document.getElementById("header_add").style.background='url(img/plus.png) left no-repeat'; }
);
}
);
}
);
Jednakże 'prawie' to działa. Efekt jest dokładnie taki, że klikając w div'a
header_add - div
content_add się zwija i rozwija na przemian.
Natomiast dalej tak jak miało być, czyli również na przemian zmiana tła z aktywnym i nie aktywnym, działa - ale z częstotliwością chyba zmniejszoną o połowę.
To znaczy, po kliknięciu dwa razy w div'a
header_add, zmienia się w nim tło, po kolejnych dwóch kliknięciach znowu zmienia się w nim tło, tylko że podczas jednego 'okresu' zmiany tła, div
content_add zdąży się już wysunąć i schować dwa razy ... próbowałem już rozdzielać czy inaczej łączyć te funkcje, ale w większości przypadków to nie działało, albo działało ale nadal nie tak jak powinno.