Você não precisa adicionar nenhum javascript extra ao que já está incluído com a opção de recolhimento de bootstraps. Em vez disso, simplesmente inclua os seletores de alternância de dados e de destino de dados em seus itens de lista de menu, assim como você faz com o botão de alternância da barra de navegação. Portanto, para o item do menu Produtos, seria assim
<li><a href="#Products" data-toggle="collapse" data-target=".navbar-collapse">Products</a></li>
Em seguida, você precisaria repetir os seletores de alternância de dados e alvo de dados para cada item do menu
EDITAR!!!
A fim de corrigir problemas de estouro e oscilação nesta correção, estou adicionando mais alguns códigos que irão consertar isso e ainda não tem nenhum javascript extra. Aqui está o novo código:
<li><a href="#products" class="hidden-xs">Products</a></li>
<li><a href="#products" class="visible-xs" data-toggle="collapse" data-target=".navbar-collapse">Products</a></li>
Aqui está ele no trabalho http://jsfiddle.net/jaketaylor/84mqazgq/
Isso tornará seus seletores de alternância e alvo específicos para o tamanho da tela e eliminará falhas no menu maior. Se alguém ainda estiver tendo problemas com falhas, entre em contato e eu encontrarei uma solução. obrigado
EDIT : No bootstrap v4.1.3 não consegui usar classes visíveis / ocultas. Em vez de hidden-xsusar d-none d-sm-blocke em vez de visible-xsusar d-block d-sm-none.