Não, vou criar um Script que atende melhor a sua necessidade, ao invés de agrupar por linha, vamos juntar todos os produtos daquela vitrine em um único elemento pai e limitar o tamanho do item por CSS, sem Script, não por questão de performance, mas diminui a complexidade e a possibilidade de erros. Antes de inserir esse novo, pode apagar aquele antigo junto com seus estilos.
CSS (Usando Grid - Recomendado):
#listagemProdutos .listagem-linha > ul {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
}
#listagemProdutos .listagem-linha > ul > li {
width: auto;
margin: 0;
}
@media (min-width: 800px) {
/* 3 itens */
#listagemProdutos .listagem-linha > ul {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
@media (min-width: 1366px) {
/* 4 itens */
#listagemProdutos .listagem-linha > ul {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
}
@media (min-width: 1920px) {
/* 5 itens */
#listagemProdutos .listagem-linha > ul {
grid-template-columns: repeat(5, minmax(0, 1fr));
}
}
CSS (Usando Flexbox):
#listagemProdutos .listagem-linha > ul {
display: flex;
flex-wrap: wrap;
}
#listagemProdutos .listagem-linha > ul > li {
width: calc(100% / 2 - 10px); /* ou width: calc(50% - 10px); */
margin: 0 0 10px 10px;
}
@media (min-width: 800px) {
/* (100% da vitrine / 3 itens) - 10px -> Corresponde ao espaçamento do item */
#listagemProdutos .listagem-linha > ul > li {
width: calc(100% / 3 - 10px); /* ou width: calc(33.333333% - 10px); */
}
}
@media (min-width: 1366px) {
/* (100% da vitrine / 4 itens) - 10px -> Corresponde ao espaçamento do item */
#listagemProdutos .listagem-linha > ul > li {
width: calc(100% / 4 - 10px); /* ou width: calc(25% - 10px); */
}
}
@media (min-width: 1920px) {
/* (100% da vitrine / 5 itens) - 10px -> Corresponde ao espaçamento do item */
#listagemProdutos .listagem-linha > ul > li {
width: calc(100% / 5 - 10px); /* ou width: calc(20% - 10px); */
}
}
JS:
$('#listagemProdutos > ul').each(function() {
let html = '<li class="listagem-linha"><ul>';
$(this).find('.listagem-linha').each(function() {
html += $(this).find('ul').html();
});
html += '</ul></li>';
$(this).html(html);
});
Espero ter ajudado, até mais.