При дальнейшей проверке возникает несколько проблем:
- Класс начальной загрузки
d-flex
эффективно применяет display: flex
. - Прослушиватель событий для
#resetBtn
добавлен внутрьпрослушиватель событий для #loadMore
, поэтому каждый раз при нажатии #loadMore
добавляется новый прослушиватель событий *1011*.
Шаги к решению:
1 - Стописпользуя style="display:
... Вместо этого используйте классы начальной загрузки d-none
и d-flex
.
<div id="resetBtn" class=" d-flex justify-content-center" style="display: none!important;">
Становится
<div id="resetBtn" class="d-none justify-content-center">
2 - Переместите #resetBtn
прослушиватель событий за пределы #loadMore
слушатель событий.
$("#loadMore").on("click", function (e) {
e.preventDefault();
$(".content:hidden").slice(0, 4).slideDown();
if ($(".content:hidden").length == 0) {
$("#resetBtn").show();
$("#loadMore").addClass("hideLoadMore");
}
$("#resetBtn").on("click", function (e) {
e.preventDefault();
$(".content:visible").slice(4, 30).slideUp();
$("#loadMore").addClass("showloadMore");
$(this).addClass("hideResetButton");
console.log(this);
});
})
Становится
$("#loadMore").on("click", function (e) {
e.preventDefault();
$(".content:hidden").slice(0, 4).slideDown();
if ($(".content:hidden").length == 0) {
$("#resetBtn").show();
$("#loadMore").addClass("hideLoadMore");
}
})
$("#resetBtn").on("click", function (e) {
e.preventDefault();
$(".content:visible").slice(4, 30).slideUp();
$("#loadMore").addClass("showloadMore");
$(this).addClass("hideResetButton");
console.log(this);
});
3 - Используйте toggleClass
для удаления d-flex
и применения d-none
и наоборот.
$("#resetBtn").show();
$("#loadMore").addClass("hideLoadMore");
становится
// shows reset button because it is hidden at this point
$("#resetBtn").toggleClass('d-none d-flex');
// hides load more button because it is shown at this point
$("#loadMore").toggleClass('d-none d-flex');
а
$("#loadMore").addClass("showloadMore");
$(this).addClass("hideResetButton");
становится
// shows load more button because it's hidden at this point
$("#loadMore").toggleClass('d-none d-flex');
// hides reset button because it is shown at this point
$(this).toggleClass('d-none d-flex');