Когда вызывается функция removeCell()
, firefox замерзает.Firefox зависает при вызове функции (jquery)
Я использую эту функцию, чтобы скрыть некоторые ячейки сетки, в зависимости от ширины окна.
Функция называется rigth после того, как сетка готова и для каждого изменения размера окна.
В Chrome и Opera работает нормально, но в Firefox он запускается сразу после первого вызова.
function removeCell(){
headerResize();
if (($('.section .header .cell:last-child').position().left + $('.section .header .cell:last-child').width()) >
$('.section .header').position().left + $('.section .header').width())
{
var priority = $body_grid_header[0].priority;
var index = 0;
for(var i in $body_grid_header){
if(bool($body_grid_header[i].visible) && $body_grid_header[i].priority > priority){
priority = $body_grid_header[i].priority;
index = i;
}
}
$body_grid_header[index].visible = 0;
$('.grid .header .cell:nth-child('+ (parseInt(index)+2) +')').addClass('hidden');
$hiddenArray.unshift(index);
headerResize();
removeCell();
}
else
{
//console.log($body_grid_header);
var firstCell = $('.grid .header .cell:first-child').width();
var lastCell = $('.grid .header .cell:last-child').width();
var headerWidth = $('.grid .header').width();
var cellCount = $('.grid .header .cell').not(':first').not(':last').not('.hidden').length;
if ((cellCount*100 + 100+firstCell+lastCell < headerWidth) && (cellCount < $body_grid_header.length))
{
var index = $hiddenArray[0];
$hiddenArray.splice(0,1);
$body_grid_header[index].visible = 1;
$('.grid .header .cell:nth-child('+ (parseInt(index)+2) +')').removeClass('hidden');
headerResize();
removeCell(); //I GUESS IT STUCKS HERE!
}
}
}
function headerResize(){
var firstColl = $('.grid .header .coll:first-child').width();
var lastColl = $('.grid .header .coll:last-child').width();
var headerWidth = $('.grid .header').width() - firstColl - lastColl;
var collCount = $('.grid .header .coll').not(':first').not(':last').not('.hidden').length;
var collWidth = headerWidth/collCount - 1; //-1 = border-left
if(collWidth < 100) collWidth = 100;
$('.section .header .coll').not(':first').not(':last').width(collWidth);
$('.section .content .coll:not(:first-child)').width(collWidth);
}
Вы отлаживались, когда происходит замораживание? – Amberlamps
Код, который вы написали, не является рекурсивным .... передайте значение i в removeecell() – thecodejack
@CodeJack: What 'i'? Он имеет рекурсию, которая существует в противном случае, если проверка состояния не выполняется. О чем ты говоришь? –