Проблема для отображения меню вкладок

#javascript #html #css #html5-canvas

#javascript #HTML #css #html5-холст

Вопрос:

Я не могу правильно отобразить меню вкладок и не нахожу решения.

Обычно .tab_container должно отображаться, и мы можем переключиться на вторую вкладку, когда мы нажимаем на нее.

Я увидел ошибку, но я нахожу, в чем проблема:

Неперехваченный «Ошибка ссылки: $ не определен»

Здесь вы можете найти мой Codepen: https://codepen.io/tagline2020/pen/QWExZOg

 $(document).ready(function(){
    $('.tab_container:first').show();
    $('.tab_navigation li:first').addClass('active');
    $('.tab_navigation li').click(function(event){
    index = $(this).index();
    $('.tab_navigation li').removeClass('active');
    $(this).addClass('active');
    $('.tab_container').hide();
    $('.tab_container').eq(index).show();
    });
});  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="style.css">
  <script src="main.js"></script>
  <title>Document</title>
  <style>
      .container-services{
    margin-left: 8%;
    margin-right: 8%;
  }
  .tab_navigation{
    display: flex;
    justify-content: space-around;
    padding: 0;
    margin: 0;
    list-style: none;
    margin-bottom: 20px;
  
  }
  .tab_navigation li{
    display: inline-block;
    padding: 5px 15px;
    background: black;
    min-width: 100px;
    text-align: center;
    color: #d4b26b;
    border-radius: 5px 5px 5px 5px;
    cursor: pointer;
    transition: all 0.3s ease-in-out;
  }
  .tab_navigation li.active{
    background: black;
    animation: shake 0.82s cubic-bezier(0,.71,.86,-0.21);
  }
  @keyframes shake {
    0% { transform: translate(1px, 1px) rotate(0deg); }
    10% { transform: translate(-1px, -2px) rotate(-1deg); }
    20% { transform: translate(-3px, 0px) rotate(1deg); }
    30% { transform: translate(3px, 2px) rotate(0deg); }
    40% { transform: translate(1px, -1px) rotate(1deg); }
    50% { transform: translate(-1px, 2px) rotate(-1deg); }
    60% { transform: translate(-3px, 1px) rotate(0deg); }
    70% { transform: translate(3px, 1px) rotate(-1deg); }
    80% { transform: translate(-1px, -1px) rotate(1deg); }
    90% { transform: translate(1px, 2px) rotate(0deg); }
    100% { transform: translate(1px, -2px) rotate(-1deg); }
  }
  
  .tab_navigation li:hover{
    background: #d4b26b;
    color : black
    
  }
  .tab_container_area{
    
  }
  .tab_container{
    font-family: 'Roboto';
    padding: 10px;
    background:  white;
    color: #fff;
    border-radius: 0 5px 5px 5px;
    display: none;
    margin-bottom: 20px;
  }
  
  .tab_container p{
    margin-bottom: 20px;
  }
  .skills{
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 8px;
    border-bottom: 1px #d4b26b solid;
    color : black;
  }
  .icons_services{
    max-width: 35px;
    max-height: 35px;
  }
  .service-price{
    font-weight: medium;
    color: black;
    font-size: bold;
   }

  </style>
</head>
<body>
  <div class="container-services">
    <ul class="tab_navigation">
        <li>Femme</li>
        <li>Coloration</li>
        <li>Homme</li>
        <li>Manucure</li>
    </ul>
    <div class="tab_container_area">
        <div class="tab_container">
            <p class="skills">Brushing cheveux long<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Shampoing.png" alt=""><span class="service-price">45.- CHF</span></p>
            <p class="skills">Shamp/Brushing cheveux courts<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Shampoing.png" alt=""><span class="service-price">30.- CHF</span></p>
            <p class="skills">Masque nourrissant <br>Crème intensive<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Pot-creme.png" alt=""><span class="service-price">10.- CHF</span></p>
            <p class="skills">Coupe Cheveux épais<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Ciseaux.png" alt=""><span class="service-price">75.- CHF</span></p>
            <p class="skills">Coupe<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Ciseaux.png" alt=""><span class="service-price">66.- CHF</span></p>
            <p class="skills">Coupe avant technique<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Ciseaux.png" alt=""><span class="service-price">50.- CHF</span></p>
            <p class="skills">Frange<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Ciseaux.png" alt=""><span class="service-price">15.- CHF</span></p>
            <p class="skills">Permanente<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Bling-Bling.png" alt=""><span class="service-price">de 100.- à 140.- CHF</span></p>
            <p class="skills">Lissage Brésilien<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Lisseur.png" alt=""><span class="service-price"> Prix sur place</span></p>
            <p class="skills">Défrisage<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Lisseur.png" alt=""><span class="service-price">de 135.- à 155.- CHF</span></p>
            <p class="skills">Fixatif<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Bling-Bling.png" alt=""><span class="service-price">de 5.- à 8.- CHF</span></p>
            <p class="skills">Coup de peigne<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Bling-Bling.png" alt=""><span class="service-price">de 25.- à 30.- CHF</span></p>
        </div>
        <div class="tab_container">
            <p class="skills">Teinture (avec shamppoing special Majirel)<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Couleur.png" alt=""><span class="service-price">de 100.- à 135.- CHF</span></p>
            <p class="skills">Coloration Racines/Shamp/Démélant<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Couleur.png" alt=""><span class="service-price">de 95.- à 120.- CHF</p>
            <p class="skills">Coloration Racines-Longueurs/Shamp/Soin<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Couleur.png" alt=""><span class="service-price">de 95.- à 120.- CHF</p>
            <p class="skills">Décoloration<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Couleur.png" alt=""><span class="service-price">de 80.- à 100.- CHF</p>
            <p class="skills">Balayage planchette<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Couleur.png" alt=""><span class="service-price">de 90.- à 115.- CHF</p>
            <p class="skills">Mèches au bonnet<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Couleur.png" alt=""><span class="service-price">de 90.- à 120.- CHF</p>
            <p class="skills">Mèches au papier<img class="icons_services" src="<?php bloginfo('template_url'); ?>/lib/pages-services/Couleur.png" alt=""><span class="service-price">de 140.- à 180.- CHF</p>
        </div>
        <div class="tab_container">
            <p class="skills">Coupe Homme Chx épais/Transfo<span class="service-price">55.- CHF</p>
            <p class="skills">Coupe Homme<span class="service-price">42.- CHF</p>
            <p class="skills">Barbe<span class="service-price">15.- CHF</p>
        </div>
        <div class="tab_container">
            <p class="skills">Manucure<span class="service-price">40.- CHF</p>
            <p class="skills">French Manucure<span class="service-price">45.- CHF</p>
            <p class="skills">Pédicure<span class="service-price">70.- CHF</p>
        </div>
    </div>
</div>
</body>
</html>  

Комментарии:

1. Похоже, вам не хватает jQuery CDN, включите его, тогда он будет работать

2. Спасибо, это работает, но я не понимаю, что мне нужно иметь в 2. поместите мой локальный скрипт jquery в верхний и нижний колонтитулы, иначе он не работает…

3. Добавьте этот <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> CDN непосредственно перед закрытием вашей основной вкладки ( </body> ). Вы можете поместить jQuery в заголовок, это просто соглашение, чтобы сохранить jQuery (или любой JS-скрипт) внизу, чтобы был загружен весь HTML-документ, на который будет действовать jQuery, иначе что произойдет, если jQuery загрузится перед содержимым HTML и выдаст сообщение об ошибке какjQuery не сможет найти много содержимого HTML для работы.

Ответ №1:

В моем случае я помещал свой файл .js перед ссылкой на скрипт jQuery, а размещение файла .js после ссылки на скрипт jQuery решило мою проблему.

 <script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>