Фильтр по:
  

  • Страница 1 из 1
  • 1
Модератор форума: likbezz  
Скрипты и коды для юкоз - Форум аццкого кодера » Как сделать? Информация для вновь прибывших » Как сделать... » Вопрос по js
Вопрос по js
Дата: Вторник, 04.06.2013, 13:49 |
Axse
Лейтенант
Группа: Пользователи
Сообщений: 52
Награды: 0
Репутация: 2
Статус: Offline


Есть скрипт который показывает похожие новости, все отлично работает но есть один момент.

В настройках скрипта указанно число похожих новостей 5
while(loaded < 5){

Но если нету этих 5 новостей а всего лишь 3 или 1 то скрипт начинает жеско тормозить и сайт невозможно прокрутить вниз или в верх, тупо все виснит. Получается он пытается найти еще недостающие новости но их просто напросто нет ...

Код
   $(function() {
     /**
     * Список похожих новостей
     */
     var $list   = $('#rp_list ul');
     /**
     * Количество похожих новостей
     */
     var elems_cnt   = $list.children().length;
      
     /**
     * Показываем первый сет похожих новостей.
     * 200 is the initial left margin for the list elements
     */
     load(200);
      
     function load(initial){
      $list.find('li').hide().andSelf().find('div').css('margin-left',-initial+'px');
      var loaded    = 0;
      //Показываем 5 случайных похожих новостей из всего списка похожих новостей для новости  
      //Не повторяем их
      while(loaded < 5){
       var r   = Math.floor(Math.random()*elems_cnt);
       var $elem    = $list.find('li:nth-child('+ (r+1) +')');
       if($elem.is(':visible'))
        continue;
       else
        $elem.show();
       ++loaded;
      }
      // анимируем
      var d = 200;
      $list.find('li:visible div').each(function(){
       $(this).stop().animate({
        'marginLeft':'-50px'
       },d += 100);
      });
     }
       
     /**
     * При наведении слайдим
     */  
     $list.find('li:visible').live('mouseenter',function () {
      $(this).find('div').stop().animate({
       'marginLeft':'-220px'
      },200);
     }).live('mouseleave',function () {
      $(this).find('div').stop().animate({
       'marginLeft':'-50px'
      },200);
     });
      
     /**
     * Кликаем на перемешать и показываем
     * другие 5 новостей
     */
     $('#rp_shuffle').unbind('click')
         .bind('click',shuffle)
         .stop()
         .animate({'margin-left':'-18px'},700);
          
     function shuffle(){
      $list.find('li:visible div').stop().animate({
       'marginLeft':'60px'
      },200,function(){
       load(-60);
      });
     }
             });

Добавлено (04.06.2013, 13:49)
---------------------------------------------
Решил проблему вот так вот

Код
while(loaded < elems_cnt){


 
Дата: Вторник, 04.06.2013, 15:37 |
Чур
Лейтенант
Группа: Проверенные
Сообщений: 69
Награды: 0
Репутация: 1
Статус: Offline


Где в работе посмотреть можно?

 
Дата: Вторник, 04.06.2013, 18:30 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


Axse,
Цитата (Axse, Вт, 04.06.2013, 13:49:05)
Решил проблему вот так вот

А если там их больше 5 ?)

Тогда уж лучше вот так:
Код
var count=(elems_cnt>5)?5:elems_cnt;
while(loaded < count){
  ...
}


 
Дата: Вторник, 04.06.2013, 23:27 |
Axse
Лейтенант
Группа: Пользователи
Сообщений: 52
Награды: 0
Репутация: 2
Статус: Offline


Цитата (Чур, Вт, 04.06.2013, 15:37:44)
Где в работе посмотреть можно?

Он у меня установлен но скрыт для груп пользавателей ( на сайте у разработчика вот как выглядет Доступно только для пользователей (а хайде)

Цитата (likbezz, Вт, 04.06.2013, 18:30:53)
А если там их больше 5 ?)


У меня вот с моим вариантом вроде все ок, но проблема возниакет что теперь похожих новостей выводится 10, что не очень хорошо = (
сейчас буду пробывать

Код
var count=(elems_cnt>5)?5:elems_cnt;  
  while(loaded < count){  
   ...  
  }

Добавлено (04.06.2013, 23:27)
---------------------------------------------
Эх всё таки как хорошо если знаеш JS smile

Спасибо

Код

var count=(elems_cnt>5)?5:elems_cnt;   
   while(loaded < count){   
    ...   
   }


то что нужно = )


 
Дата: Понедельник, 10.06.2013, 03:35 |
Чур
Лейтенант
Группа: Проверенные
Сообщений: 69
Награды: 0
Репутация: 1
Статус: Offline


Цитата (Axse, Вт, 04.06.2013, 22:27:51)
( на сайте у разработчика вот как выглядет Доступно только для пользователейhttp://demos.dark5ider.ru/jquery/sliderelated/ (а хайде)

У меня там не работает ничего. Заставка только и надписи, типа, Наведи мышкой.
В рабочем варианте как глянуть?


 
Дата: Понедельник, 10.06.2013, 16:06 |
Axse
Лейтенант
Группа: Пользователи
Сообщений: 52
Награды: 0
Репутация: 2
Статус: Offline


Цитата (Чур, Пн, 10.06.2013, 03:35:16)
В рабочем варианте как глянуть?


Ссылку кинул в личку

Добавлено (10.06.2013, 16:06)
---------------------------------------------
и странно почему не работает .. у меня на примере все ок, браузер Опера, IE работают норм

 
Скрипты и коды для юкоз - Форум аццкого кодера » Как сделать? Информация для вновь прибывших » Как сделать... » Вопрос по js
  • Страница 1 из 1
  • 1
Поиск:


Мобильная версия