Hejka mam taki kod
$(document).ready(function(){ $(".filtr").click(function(){ //$(".preloader").css("display", "block"); var data = $(this).attr("name"); $(this).addClass("check"); apartamenty.forEach( function(id) { var kalendarz = $("div[name="+id+"]").attr(data); if($("div[name="+id+"]").is(':visible')) { if(kalendarz==0){ $("div[name="+id+"]").hide(); } }else{ $("div[name="+id+"]").show(); } }); }); });
$(this).addClass("check");
apartamenty.forEach
Na pewno wykonuje się od razu jak klikasz w filtr, nie czeka na koniec pętli o którym piszesz.
Ta linia kodu wykonuje się zanim pętla się zacznie wykonywać.
Jednak jest inaczej i wynik w przeglądarce widzę dopiero po wykonaniu tej pętli.czytalem o asynchronicznym ladowaniu się kodu, że może tutaj leży problem. Console.log kiedy dam w tym samym miejscu co linijka z addclass wyświetla tekst który sobie wpisze ale z akcjami typu DOM chyba jest inaczej? Mądrze się a nie wiem ale tak czy siak nie wykonuje się jedno po drugim tylko czeka skrypt aż skończy mielić fotelach w funkcji
$(".filtr").click(function()
A co się dzieje po usunięciu pętli?
Ile jest elementów apartamenty i gdzie inicjujesz tą zmienną?
jak usune petle to leci z wykonywaniem po kolei. wlasciwie to nie widac przez chwile preloader bo jest show i hide po sobie
210 apartamentow
a jeszcze mam pytanie o to
apartamenty.forEach(function(id) {})
wyswietli jak skonczy sie petla a czy da sie wyswietlac w trakcie wykonywania petli?
Spróbuj owinąć pętlę w:
setTimeout(function(){ ...pętla }, 10);
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)