Вставить loader в функцию
Доброго времени. Возникла проблема. Суть ее такова:
Имеется скрипт фильтрации блоков $(function() { var newSelection = ""; $("#flavor-nav a").click(function(){ $("#all-flavors").fadeTo(200, 0.10); $("#flavor-nav a").removeClass("current"); $(this).addClass("current"); newSelection = $(this).attr("rel"); $(".flavor").not("."+newSelection).slideUp(); $("."+newSelection).slideDown(); $("#all-flavors").fadeTo(600, 1); }); }); Когда блоков немного все прекрасно работает, но когда их порядка 500 штук, то при первом клике на фильтре элементы загружаются 12 сек, при дальнейших кликах все работает очень быстро как и положено. Поэтому возникла идея поставить лоадер, чтоб пользователь не ломал голову почему все зависло. Привожу код html для понятности. <div id="flavor-nav"> <a rel="all" class="current button type">Все </a> <a rel="pop" class="button type">Популярные</a> </div> <div class="flavor all pop"><img src="/p266.jpg"> </div> <div class="flavor all"><img src="/p267.jpg"> </div> <div class="flavor all"><img src="/p268.jpg"> </div> <div class="flavor all pop"><img src="/p269.jpg"> </div> Понимаю что надо поставить картинку <div id="loading"> <img id="loading-image" src="/ajax-loader.gif" alt="Loading..." /> </div> и что то похожее на такой скрипт $(window).load(function() { $('#loading').hide(); }); только он срабатывает для страницы, а мне нужно для блоков, помогите плиз) |
Цитата:
|
они есть, просто при выборе свойства популярные допустим, они фильтруются первый раз 12 сек
|
Katefan,
может css анимацию попробовать сделать вместо slideDown и закешируйте $(".flavor") до функции чтоб не искать всякий раз $(function() { var divs = $(".flavor"); $("#flavor-nav a").click(function(event){ event.preventDefault(); $("#all-flavors").fadeTo(200, 0.10); $("#flavor-nav a").removeClass("current"); $(this).addClass("current"); var newSelection = $(this).attr("rel"); newSelection = divs.filter("."+newSelection).slideDown(600); divs.not(newSelection).slideUp(600); $("#all-flavors").fadeTo(600, 1); }); }); |
Рони,
Если я правильно поняла, то я заменяю свой скрипт на тот, что вы написали, и добавляю css анимацию типа такой. .flavor .slidedown { -webkit-animation-name: slideDown; } .flavor .slideup { -webkit-animation-name: slideUp; } @-webkit-keyframes slideDown { 0% { opacity: 0; -webkit-transform: translateY(startYposition); } 100% { opacity: 1; -webkit-transform: translateY(endYposition); } } @-webkit-keyframes slideUp { 0% { opacity: 1; -webkit-transform: translateY(startYposition); } 100% { opacity: 0; -webkit-transform: translateY(endYposition); } } + надо добавить класс slidedown и slideup в html. Только ничего не изменилось, все равно при первом клике все длится эти 12 сек :( Мне кажется значок лоадера тут смотрелся бы очень норм при их фильтрации, но я тупица в javascript и jquery и не знаю как модифицировать скрипт(( |
Цитата:
|
Часовой пояс GMT +3, время: 04:28. |