Хорошо, когда есть на что посмотреть
velikorodnov.com/wordpress/flatastic/classic
Теперь все ясно. Ты забыл указать, что твой элемент .remove-item это ссылка. Это меняет все. Переход по ссылке происходит раньше, чем обрабатывается твой обработчик события. Это можно предотвратить, передав колбеку объект события и обратиться к ее методу
$(".remove-item").click(function(e) {
e.preventDefault();
if ($(".fixed-bottom .cart_list li").hasClass("empty")) {
$(".fixed-bottom").hide();
} else {
$('#foot-carousel').data('owlCarousel').removeItem($(this));
$(".fixed-bottom").show();
};
});
Перезагрузка страницы не произойдет и твои условия будут выполнены, но тогда твой сервер не узнает, что товар был удален из корзины, потому что сейчас эти данные передаются на бекенд именно через перезагрузку страницы. Тогда тебе придется исполнять этот запрос самостоятельно, через ajax, передавая те параметры, которые прописаны в ссылке.
Дополнение
Если элементы, на которые вы добавлили обработчик событий появляются на странице динамически, то есть в результате работы других скриптов, то ваш обработчик на них не сработает.
В таких случаях нужно использовать делегирование
$('родитель-элементов-который-точно-есть-на-странице').on(
'click',
'.remove-item',
function(e) { /*...далее по списку... */ });
Без этого ваш обработчик вообще никогда не запускается, чтобы мы внутри него не прописали.