Одна проблема состоит в том, что селектор, который вы формируете с помощью lastItemIndex, когда он равен нулю, является недействительным:
$('.nav li:gt(' + (lastItemIndex - 1) + ')') ...
Когда он равен нулю, это будет выглядеть как .nav li:gt(-1)
, и это неверно (или, по крайней мере, не работает). Если вы измените его на:
$('.nav li:gt(' + Math.max(0, lastItemIndex - 1) + ')')
, затем элементы <li>
переносятся в поле «Еще».
Как отдельное примечание, вероятно, не самая лучшая идея делать обновления в обработчике "изменения размера" напрямую. Браузеры быстро запускают это событие , и выполнение всей этой работы с DOM приведет к вялому поведению. Вместо этого, вы можете сделать так, чтобы обработчик «resize» запускал таймер на 50 или 100 миллисекунд, отменяя любой предыдущий таймер, когда это происходит. Когда пользователь достаточно медленно замедлит изменение размера, сработает событие таймера, и вы сможете выполнить там работу DOM.
Здесь - это jsfiddle, обновленный с исправлением селектора (без изменений в обработке событий).