Есть скрипт который показывает похожие новости, все отлично работает но есть один момент.
В настройках скрипта указанно число похожих новостей 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){