Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите сделать плавное появление

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
android
Отправлено: 01 Декабря, 2012 - 22:00:24
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




Здравствуйте, есть 3 блока:

CODE (html):
скопировать код в буфер обмена
  1.  
  2.  
  3. <div class="test" style="display:none;">Тут какой то текст<br/></div>
  4. <div class="test" style="display:none;">Тут какой то текст<br/></div>
  5. <div class="test" style="display:none;">Тут какой то текст<br/></div>
  6.  
  7.  


И есть скрипт который должен обрабатывать контент внутри каждого блока и после обработки плавно выводить блок.

и так вот мой вариант, но блоки появляются все сразу независимо от скорости обработки моего скрипта.

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. $('.test').each(function(q, w) {
  4.  
  5.             //Тут гет запрос отправки данных
  6.             $.get('/op', function(a) {
  7.                 //получаем ответ что все ок
  8.  
  9.                 if(a == 1) $(this, w).show(3000);
  10.             });
  11.            
  12.         });
  13.  
  14.  


И собственно выводит все сразу (в скрипте я привел как должно быть расположение обработчика, соответственно this show test не будет работать в get запросе), прошу помочь в решении данного вопроса.

(Отредактировано автором: 01 Декабря, 2012 - 22:01:23)

 
 Top
LIME
Отправлено: 01 Декабря, 2012 - 22:19:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




. show( w*3000) ;
 
 Top
android
Отправлено: 01 Декабря, 2012 - 22:27:20
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




LIME спасибо, только не w а q
 
 Top
LIME
Отправлено: 01 Декабря, 2012 - 22:33:45
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




возможно лучше применить setTimeout()
 
 Top
armancho7777777 Супермодератор
Отправлено: 01 Декабря, 2012 - 23:29:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Как-то так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. function showRecursive(elements, key)
  4. {
  5.         var elements = $(elements),
  6.             count = elements.size(),
  7.             key = key || 0;
  8.        
  9.         if(key <= count + 1)
  10.         {
  11.                 var el = elements.eq(key);
  12.  
  13.                 $.get('/op', function(a) {
  14.                
  15.                         if(a == 1)
  16.                         {
  17.                                 el.show(1000, function(){
  18.                                        
  19.                                         if(key + 1 < count)
  20.                                         showRecursive(elements, key + 1);
  21.                                        
  22.                                 });
  23.                         }
  24.                         else
  25.                         {
  26.                                 if(key + 1 < count)
  27.                                 showRecursive(elements, key + 1);
  28.                         }
  29.                 });
  30.         }
  31. }
  32.  
  33. $(function(){
  34.     showRecursive('.test');
  35. });
  36.  


Не проверял.
 
 Top
LIME
Отправлено: 01 Декабря, 2012 - 23:40:03
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




рекурсий впринципе лучше избегать
и ряд гет запросов лучше заменить одним если можно с возвратом массива результатов
или отправить все кучей
а шоу запустить через таймер от индекса массива
 
 Top
armancho7777777 Супермодератор
Отправлено: 01 Декабря, 2012 - 23:43:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




LIME пишет:
рекурсий впринципе лучше избегать

Почему?
Типа:
- О, рекурсия ((( Не, ищем другой вариант?)

LIME пишет:
ряд гет запросов лучше заменить одним если можно с возвратом массива результатов

Согласен. Если конечно все запросы к одному файлу.
Но, почему-то кажется, что это просто пример, над которым ТС не парился)
 
 Top
LIME
Отправлено: 01 Декабря, 2012 - 23:51:14
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




именно...ищем вариант
зачем оперативку засорять зря
 
 Top
armancho7777777 Супермодератор
Отправлено: 01 Декабря, 2012 - 23:57:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




LIME пишет:
зачем оперативку засорять зря

То есть между многократными однотипными действиеми в цикле и рекурсией Вы видите разницу в производительности ?)
 
 Top
LIME
Отправлено: 01 Декабря, 2012 - 23:57:32
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




а если сбой на одном из запросов?
я вообще ...без конкретики
(Добавление)
есть разница и в производительности и в памяти
(Добавление)
что происходит при вызове ф-ции?
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Декабря, 2012 - 00:01:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




LIME пишет:
а если сбой на одном из запросов?

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. if(a == 1)
  3. {
  4.     // show
  5. }
  6. else
  7. {
  8.      return;
  9. }
  10.  

(Добавление)
LIME пишет:
что происходит при вызове ф-ции?

Если адреса разные, то:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. for(/*  ...........  */)
  3. {
  4.         $.get('/op', function(a) {
  5.        
  6.                 if(a == 1)
  7.                 {
  8.                         el.show(1000, function(){
  9.                                
  10.                                
  11.                         });
  12.                 }
  13.         });
  14. }
  15.  
 
 Top
LIME
Отправлено: 02 Декабря, 2012 - 00:07:53
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




и последующие запросы не будут выполнены
но это побочный минус
(Добавление)
я не об этом
происходит выделение памяти
перенос туда кода и параметров
после отработки возврат данных в вызвавшую фцию и очистка памяти
таким образом выстраивается цепь фций
и потом схлопывается обратно
стек вызовов если большой то хреново
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Декабря, 2012 - 00:13:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




LIME пишет:
и последующие запросы не будут выполнены

Точнее так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. if(a == 1)
  3. {
  4.     // show
  5. }
  6. else
  7. {
  8.      if(key + 1 < count)
  9.      showRecursive(elements, key + 1);
  10. }
  11.  


LIME пишет:
происходит выделение памяти
перенос туда кода и параметров
после отработки возврат данных в вызвавшую фцию и очистка памяти
таким образом выстраивается цепь фций
и потом схлопывается обратно
стек вызовов если большой то хреново


Точно )
Оооохххх Lime Подмигивание
+1
 
 Top
tuareg
Отправлено: 02 Декабря, 2012 - 08:36:29
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Тут самый прикол, м.б в том, что при запросах в цикле(не используя рекурсию), результат, более раннего запроса, может придти позже, более позднего. и будет весело Улыбка. А так если по уму, то использовать done() и т.д

(Отредактировано автором: 02 Декабря, 2012 - 08:36:55)

 
 Top
android
Отправлено: 04 Декабря, 2012 - 19:12:38
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




Спасибо вам большое!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB