Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów
Funkcja toggle() pod Google Chrome - Wersja do druku

+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: xHTML, CSS, JavaScript (https://www.webmastertalk.pl/forum-xhtml-css-javascript)
+--- Wątek: Funkcja toggle() pod Google Chrome (/thread-funkcja-toggle-pod-google-chrome)

Strony: 1 2


Funkcja toggle() pod Google Chrome - dahel - 14-11-2011

Witam. Właśnie z tą funkcją mam problem. Mianowicie, gdy ustawiam parametr toggle (np toggle(200)), określający szybkość rozwijania Chrome psuje mi układ tabeli. Pod FF i IE działa wszystko w porządku. Gdy usunę parametr (zostawie toggle()) Chrome juz nie psuje mi układu. Czy to, jak rozumiem, Chrome po prostu nie obsługuje poprawnie toggle z tym parametrem?


RE: Funkcja toggle() pod Google Chrome - Marys - 14-11-2011

Chrome w ogóle dziwnie działa z js. Może oddzielny styl?


RE: Funkcja toggle() pod Google Chrome - dahel - 14-11-2011

Oddzielny styl? Mozesz rozwinąć? Dorzucam kod dla jasności.Bez parametru "200" skrypt działa sprawnie pod Chrome.

$('#rozwin0').click(function(){
$('#ukryty0').toggle(200);
}).toggle(function(){
$('#rozwin0').html('Zwiń<img src="../images/zwin.png" />').addClass('zwin');
}, function(){
$('#rozwin0').html('Rozwiń<img src="../images/rozwin.png" />');
});


RE: Funkcja toggle() pod Google Chrome - Kartofelek - 14-11-2011

????
A od kiedy .toggle(200) ustawia szybkość animacji?


http://jqapi.com/#p=toggle

Ty podpinasz 2 x toggle...

Poza tym tabele mają wyświetlanie table lub table-cell (komorki ect). Domyślnie ukrywanie i pokazywanie to dispaly:block i display:none. Pamiętam że spokojnie to obchodziłem własnym kodem.


RE: Funkcja toggle() pod Google Chrome - dahel - 15-11-2011

dla toggle mozna ustawić szybkość rozwijania. W dokumentacji do której linka wkleiłeś także stoi $("p").toggle("slow");. Podpinanie 2x toggle też się sprawdza dla każdej z przeglądarek, więc nie jest błędem. Jak pisałem, problem polega na tym, że Chrome psuje układ tabeli w momencie dodania do toggle parametru jak wyżej.
Pokombinuje jeszcze trochę. Ale szybciej pewnie poszłoby mi z jakimiś wskazówkami, więc byłbym wdzięcznySmile.
I jeszcze jedno pytanko a'propos ukrywania elementów tabeli, jeśli nie display dla wiersza, to co?



RE: Funkcja toggle() pod Google Chrome - Kartofelek - 15-11-2011

Nie. Toggle się podpina 1 raz. To że się sprawdza nie oznacza że jest dobrze. To tak jakbym podpinał 2x click.
Pokombinuj z 2 funkcjami w śrdoku, szukaniem (find) tabeli itp i ustawianiu odpowiedniego sposobu renderowania


RE: Funkcja toggle() pod Google Chrome - dahel - 17-11-2011

$('#rozwin0').click(function(){
$('#ukryty0').slideToggle(400);
}).toggle(function(){
$('#rozwin0').html('Zwiń<img src="../images/zwin.png" />').addClass('zwin');
}, function(){
$('#rozwin0').html('Rozwiń<img src="../images/rozwin.png" />');
});
Działa sprawnie także pod Chrome. Pierwsze toggle zmienia widoczność elementu, drugie posiada argumenty, więc przełącza stan pomiędzy nimi. Nie ma tu żadnego konfliktu. Rozglądałem sie, podpinanie 2x toggle to stosowana praktyka. Dodatkowo slideToggle z argumentem 400 też działa niezawodnie. Trudno mi zatem zgodzić z Twoją opinią kartofelku. Mimo to dzieki za wskazówki, pozdrawiamSmile. i hmm..kartofelek, to jak rozumiem, taka pyrka??;p


RE: Funkcja toggle() pod Google Chrome - Kartofelek - 17-11-2011

To jest błędna praktyka. Takich z dupy tutoriali jest w necie milion pińcet więc to nie jest żaden wyznacznik.

Ty powinieneś użyć toggle i tyle.

Kod:
$('#rozwin0').toggle(
     function() {
          $('#ukryty0').slideDown(400);
          $(this).html('Zwiń ....');
     },
     function() {
          $('#ukryty0').slideUp(400);
          $(this).html('Rozwiń....');
     }
)

A teraz proste pytanie - czemu NIE tak jak ty to zrobiłeś?
1) bo 1 rzecz na kilka zdarzeń - źle.
2) poklikaj sobie szybko w ten twój "guzik". Zobaczysz piękny efekt powtarzania Smile?

Zresztą nawet w powyższym kodzie widać błędy. Ogólnie toggle w takich zastosowaniach się po prostu nie sprawdza (patrz pkt 2). O wiele lepiej zrobić click wraz z wykrywaniem czy dany element jest animowany, stopowaniem animacji ect. No i o wiele lepiej używać parents, children ect zamiast id.

Ps. Wrzucanie DIV do środka A też działa poprawnie, tak samo jak używanie U, CENTER ect.


RE: Funkcja toggle() pod Google Chrome - dahel - 17-11-2011

Racja, wygląda to co najmniej bardziej logicznie. Póki co zostawie toggle, bo to, co pisałes na końcu jest mi jeszcze troche obce. Dzięki.



RE: Funkcja toggle() pod Google Chrome - Kartofelek - 17-11-2011

Tutaj pisałem o animacji. Na górze wybierz temat "animacja w jquery". Jest tam też właśnie o stopowaniu itp
http://doman.art.pl/kursjs/kurs/jquery/jquery.html