Где может быть ошибка в скрипте?

192
16 апреля 2017, 00:32

Добрый день! На странице есть ссылки, расположенные в одну строку. Этот скрипт прячет ссылки, которые при ресайзе выходят за пределы экрана, в отдельный блок.

$(document).ready(function() {
var $nav = $('.h__i');
var $btn = $('.h__i button');
var $vlinks = $('.h__i .visible-links');
var $hlinks = $('.h__i .hidden-links');
var breaks = [];
function updateNav() {
var availableSpace = $btn.hasClass('hidden') ? $nav.width() : $nav.width() - $btn.width() - 30;
    if($vlinks.width() > availableSpace) {
        breaks.push($vlinks.width());
        $vlinks.children().last().prependTo($hlinks);
    if($btn.hasClass('hidden')) {
        $btn.removeClass('hidden');
    }
    } else {
    if(availableSpace > breaks[breaks.length-1]) {
        $hlinks.children().first().appendTo($vlinks);
        breaks.pop();
    }
    if(breaks.length < 1) {
        $btn.addClass('hidden');
        $hlinks.addClass('hidden');
    }
    }
        $btn.attr("count", breaks.length);
    if($vlinks.width() > availableSpace) {
        updateNav();
    }
}
$(window).resize(function() {
    updateNav();
});
$btn.on('click', function() {
    $hlinks.toggleClass('hidden');
});
    updateNav();
});

Есть одна странная особенность. В стиле указано для блоков:

.h__i .visible-links {
    display: table;
}
.h__i .visible-links li {
    display: table-cell;
}

Если вместо table указать block:

.h__i .visible-links {
    display: block;
}
.h__i .visible-links li {
    display: inline-block;
}

то при открытии страницы в более старых браузерах, браузер начинает эту страницу грузить очень и очень долго, и в итоге по окончании загрузки все ссылки становятся невидимыми (даже те, которые попадают в экран), а на счетчике количество спрятанных ссылок становится цифра в несколько десятков тысяч. Подскажите, пожалуйста, где кроется ошибка? И, пожалуйста, проверьте скрипт в целом на ошибки. Огромно вас благодарю!

READ ALSO
Растянуть DIV по высоте родителя

Растянуть DIV по высоте родителя

Ребят, как растянуть все DIVы по высоте родителя при условии:

274
Картинка как фон панели в Swing

Картинка как фон панели в Swing

Возможно ли сделать картинку фоном панели на подоби иконки?

178
Синхронизация календаря с Exchange и внешней API

Синхронизация календаря с Exchange и внешней API

Нужно синхронизировать удаление события в Exchange с внешней системойЕсли я удалю событие в Exchange, оно переместится в папку удаленные почты

215
Вывод результатов запросов Elasticsearch

Вывод результатов запросов Elasticsearch

Есть запрос к базе Elasticsearch с 6 агрегациямитребуется для каждой первой агрегации а именно IP адрес вывести все данные из базы

187