Не работает кнопка Load More

На странице должно показываться только 3 карторки, а после нажатия на кнопку Load More, показываться еще 3. Не могу понять, почему не работает?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <title>Business Cards</title>
    <style>
        .card {
            box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
            transition: 0.3s;
            width: 60%;
            margin-left: auto;
            margin-right: auto;
        }

        .card:hover {
            box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2);
        }

        .card-group {
            margin-top: 40px;
            margin-bottom: 40px;
        }

        #img {
            border-radius: 5px 5px 0 0;
        }

        .loadMore {
            width: 500px;
            border: 1px solid gray;
            display: flex;
            flex-direction: column;
            align-items: center;
            margin-left: auto;
            margin-right: auto;
        }
    </style>
</head>
<body>
    <nav class="navbar navbar-light bg-light">
        <div class="container-fluid">
          <span class="navbar-brand mb-0 h1">Business Cards</span>
        </div>
    </nav>
    
    <div class="card-group">
        <div class="row row-cols-1 row-cols-md-3 g-4">

        </div>
        <!--<button type="button" class="btn btn-outline-secondary">Secondary</button>-->
    </div>
    <a href="#" id="loadMore" class="loadMore"> Load More </a>
    <footer>
        <div class="text-center p-4" style="background-color: rgba(0, 0, 0, 0.05);">
            © Nimchenko Anastasiya 2021
        </div>
    </footer>
    
    <script>
        const url = 'https://reqres.in/api/users';
        async function getCards() {
            let response = await fetch(url);
            cards = await response.json();
            cardsData = cards.data;
            cardsList = document.querySelector('.row');
            
            for (key in cardsData) {
                cardsList.innerHTML += `
                <div class="col">
                    <div class="card">
                        <img src="${cardsData[key].avatar}" class="card-img-top"  width="200" height="200" alt="...">
                        <div class="card-body">
                            <h5 class="card-title">${cardsData[key].first_name} ${cardsData[key].last_name}</h5>
                            <p class="card-text">${cardsData[key].email}</p>
                        </div>
                    </div>
                </div>    
                `
            }
        }

        getCards();
    </script>
    <script>
        $( document ).ready(function() {
            $(function(){
                $(".col").slice(0,3).show();
                $("#loadMore").on('click', function(e){
                    e.preventDefault();
                    $(".col:hidden").slice(0,3).slideDown();
                })})
        });
    </script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</body>
</html>

Ответы (1 шт):

Автор решения: Oliver Patterson

Можно всем элементам добавить класс col--hidden и убрать класс для первых трех, по кнопке мы выбираем опять же блоки с данным классами, оставляем только первые три, делаем slideDown и убираем класс.
Из-за чего-то поехала верстка, но я не разбираюсь в бутстрапе, чтобы это поправить.

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <title>Business Cards</title>
    <style>
        /* стили для нового класса */
        .col--hidden {
          display: none;
        }
        .card {
            box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
            transition: 0.3s;
            width: 60%;
            margin-left: auto;
            margin-right: auto;
        }

        .card:hover {
            box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2);
        }

        .card-group {
            margin-top: 40px;
            margin-bottom: 40px;
        }

        #img {
            border-radius: 5px 5px 0 0;
        }

        .loadMore {
            width: 500px;
            border: 1px solid gray;
            display: flex;
            flex-direction: column;
            align-items: center;
            margin-left: auto;
            margin-right: auto;
        }
    </style>
</head>
<body>
    <nav class="navbar navbar-light bg-light">
        <div class="container-fluid">
          <span class="navbar-brand mb-0 h1">Business Cards</span>
        </div>
    </nav>
    
    <div class="card-group">
        <div class="row row-cols-1 row-cols-md-3 g-4">

        </div>
        <!--<button type="button" class="btn btn-outline-secondary">Secondary</button>-->
    </div>
    <a href="#" id="loadMore" class="loadMore"> Load More </a>
    <footer>
        <div class="text-center p-4" style="background-color: rgba(0, 0, 0, 0.05);">
            © Nimchenko Anastasiya 2021
        </div>
    </footer>
    
    <script>
        const url = 'https://reqres.in/api/users';
        async function getCards() {
            let response = await fetch(url);
            cards = await response.json();
            cardsData = cards.data;
            cardsList = document.querySelector('.row');
            
            for (key in cardsData) {
                // добавлен класс для главного блока
                cardsList.innerHTML += `
                <div class="col col--hidden">
                    <div class="card">
                        <img src="${cardsData[key].avatar}" class="card-img-top"  width="200" height="200" alt="...">
                        <div class="card-body">
                            <h5 class="card-title">${cardsData[key].first_name} ${cardsData[key].last_name}</h5>
                            <p class="card-text">${cardsData[key].email}</p>
                        </div>
                    </div>
                </div>    
                `
            }
            
            $(".col--hidden").slice(0,3).removeClass('col--hidden'); // Эта строка теперь тут
        }

        getCards();
    </script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script>
        $( document ).ready(function() {
            $(function(){
                $("#loadMore").on('click', function(e){
                    e.preventDefault();
                    $(".col--hidden").slice(0,3).slideDown().removeClass('col--hidden'); // изменение тут
                })})
        });
    </script>
</body>
</html>

→ Ссылка