Невозможно заставить jquery работать, я пробовал отладку, но не работает - PullRequest
0 голосов
/ 28 апреля 2020

$(function() {
    $(".toggle").on("click", function() {
        if ($(".item").hasClass("active")) {
            $(".item").removeClass("active");
            $(this).find("a").html("<i class='fas fa-bars'></i>");
        } else {
            $(".item").addClass("active");
            $(this).find("a").html("<i class='fas fa-times'></i>");
        }
    });
});
nav {
    background: #222;
    padding: 5px 20px;
}
ul {
    list-style-type: none;
}
a {
    color: white;
    text-decoration: none;
}
a:hover {
    text-decoration: underline;
}
.logo a:hover {
    text-decoration: none;
}
.menu li {
    font-size: 16px;
    padding: 15px 5px;
    white-space: nowrap;
}
.logo a,
.toggle a {
    font-size: 20px;
}
/* Mobile menu */
.menu {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
}
.toggle {
    order: 1;
}
.item.button {
    order: 2;
}
.item {
    width: 100%;
    text-align: center;
    order: 3;
    display: none;
}
.item.active {
    display: block;
}
/* Tablet menu */
@media all and (min-width: 600px) {
    .menu {
        justify-content: center;
    }
    .logo {
        flex: 1;
    }
    .toggle {
        flex: 1;
        text-align: right;
    }
    .item.button {
        width: auto;
        order: 1;
        display: block;
    }
    .toggle {
        order: 2;
    }
    .button.secondary {
        border: 0;
    }
    .button a {
        padding: 7.5px 15px;
        background: teal;
        border: 1px #006d6d solid;
    }
    .button.secondary a {
        background: transparent;    
    }
    .button a:hover {
        text-decoration: none;
    }
    .button:not(.secondary) a:hover {
        background: #006d6d;
        border-color: #005959;
    }
    .button.secondary a:hover {
        color: #ddd;
    } 
}
/* Desktop menu */
@media all and (min-width: 900px) {
    .item {
        display: block;
        width: auto;
    }
    .toggle {
        display: none;
    }
    .logo {
        order: 0;
    }
    .item {
        order: 1;
    }
    .button {
        order: 2;
    }
    .menu li {
        padding: 15px 10px;
    }
    .menu li.button {
        padding-right: 0;
    }
}
<nav>
    <ul class="menu">
        <li class="logo"><a href="#">Invisible App</a></li>
        <li class="item"><a href="#">Home</a></li>
        <li class="item"><a href="#">About</a></li>
        <li class="item"><a href="#">Services</a></li>
        <li class="item"><a href="#">Features</a></li>
        <li class="item"><a href="#">Blog</a></li>
        <li class="item"><a href="#">Contact</a>
        </li>
        <li class="item button"><a href="#">Log In</a></li>
        <li class="item button secondary"><a href="#">Sign Up</a></li>
        <li class="toggle"><a href="#"><i class="fas fa-bars"></i></a></li>
    </ul>
</nav>
	
<main>
</main>
I have found this awesome tutorial for a hamburger menu using flexbox, but my jquery isn't working. I have tried to move where the jquery is in the document but have had no luck. Does anyone have any ideas why?

РЕДАКТИРОВАТЬ Я добавил CSS для HTML ниже. Я также добавлю ссылку на учебник на случай, если я что-то неправильно понял или что-то упустил. По сути, когда веб-сайт сокращен до мобильного дизайна, значок гамбургера не работает, я нажимаю, и ничего не происходит. Извините, я должен был объяснить это ранее. В jquery есть ошибка, но я не знаю, как ее исправить, я новичок ie с javascript и jquery.
Спасибо

    <body>

    <nav>
        <ul class="menu">
            <li class="logo"><a href="#">Invisible App</a></li>
            <li class="item"><a href="#">Home</a></li>
            <li class="item"><a href="#">About</a></li>
            <li class="item"><a href="#">Services</a></li>
            <li class="item"><a href="#">Features</a></li>
            <li class="item"><a href="#">Blog</a></li>
            <li class="item"><a href="#">Contact</a>
            </li>
            <li class="item button"><a href="#">Log In</a></li>
            <li class="item button secondary"><a href="#">Sign Up</a></li>
            <li class="toggle"><a href="#"><i class="fas fa-bars"></i></a></li>
        </ul>
    </nav>

    <main>
    </main>
    <script>
    $(function() {
        $(".toggle").on("click", function() {
            if ($(".item").hasClass("active")) {
                $(".item").removeClass("active");
                $(this).find("a").html("<i class='fas fa-bars'></i>");
            } else {
                $(".item").addClass("active");
                $(this).find("a").html("<i class='fas fa-times'></i>");
            }
        });
    });
    </script>
    </body>



nav {
    background: #222;
    padding: 5px 20px;
}
ul {
    list-style-type: none;
}
a {
    color: white;
    text-decoration: none;
}
a:hover {
    text-decoration: underline;
}
.logo a:hover {
    text-decoration: none;
}
.menu li {
    font-size: 16px;
    padding: 15px 5px;
    white-space: nowrap;
}
.logo a,
.toggle a {
    font-size: 20px;
}
/* Mobile menu */
.menu {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
}
.toggle {
    order: 1;
}
.item.button {
    order: 2;
}
.item {
    width: 100%;
    text-align: center;
    order: 3;
    display: none;
}
.item.active {
    display: block;
}

Ответы [ 2 ]

1 голос
/ 28 апреля 2020
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<style>
nav {
    background: #222;
    padding: 5px 20px;
}
ul {
    list-style-type: none;
}
a {
    color: white;
    text-decoration: none;
}
a:hover {
    text-decoration: underline;
}
.logo a:hover {
    text-decoration: none;
}
.menu li {
    font-size: 16px;
    padding: 15px 5px;
    white-space: nowrap;
}
.logo a,
.toggle a {
    font-size: 20px;
}
/* Mobile menu */
.menu {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
}
.toggle {
    order: 1;
}
.item.button {
    order: 2;
}
.item {
    width: 100%;
    text-align: center;
    order: 3;
    display: none;
}
.item.active {
    display: block;
}
/* Tablet menu */
@media all and (min-width: 600px) {
    .menu {
        justify-content: center;
    }
    .logo {
        flex: 1;
    }
    .toggle {
        flex: 1;
        text-align: right;
    }
    .item.button {
        width: auto;
        order: 1;
        display: block;
    }
    .toggle {
        order: 2;
    }
    .button.secondary {
        border: 0;
    }
    .button a {
        padding: 7.5px 15px;
        background: teal;
        border: 1px #006d6d solid;
    }
    .button.secondary a {
        background: transparent;    
    }
    .button a:hover {
        text-decoration: none;
    }
    .button:not(.secondary) a:hover {
        background: #006d6d;
        border-color: #005959;
    }
    .button.secondary a:hover {
        color: #ddd;
    } 
}
/* Desktop menu */
@media all and (min-width: 900px) {
    .item {
        display: block;
        width: auto;
    }
    .toggle {
        display: none;
    }
    .logo {
        order: 0;
    }
    .item {
        order: 1;
    }
    .button {
        order: 2;
    }
    .menu li {
        padding: 15px 10px;
    }
    .menu li.button {
        padding-right: 0;
    }
}
</style>
<nav>
    <ul class="menu">
        <li class="toggle"> <a href="#"><i class="fas fa-bars"></i></a> fadfsadf </li>
        <li class="logo"><a href="#">Invisible App</a></li>
        <li class="item"><a href="#">Home</a></li>
        <li class="item"><a href="#">About</a></li>
        <li class="item"><a href="#">Services</a></li>
        <li class="item"><a href="#">Features</a></li>
        <li class="item"><a href="#">Blog</a></li>
        <li class="item"><a href="#">Contact</a>
        </li>
        <li class="item button"><a href="#">Log In</a></li>
        <li class="item button secondary"><a href="#">Sign Up</a></li>

    </ul>
</nav>

<main>
</main>
<script>

$(function() {
    console.log("here");
    $(".item").on("click", function() {
        console.log("clicked");
        if ($(".item").hasClass("active")) {
            $(".item").removeClass("active");
            $(this).find("a").html("<i class='fas fa-bars'></i>");
        } else {
            $(".item").addClass("active");
            $(this).find("a").html("<i class='fas fa-times'></i>");
        }
    });
});
</script>

Скопируйте приведенный выше код, вставьте его в редактор и сохраните его. html, запустите браузер и нажмите на любое меню. jquery работает и меню также скрывается. Jquery js следует добавить сначала. Надеюсь, это поможет, спасибо

1 голос
/ 28 апреля 2020

Вы должны добавить ссылку на библиотеку jQuery перед тегами скрипта ... Добавьте эту строку перед тегом скрипта

<script src="https://code.jquery.com/jquery-3.5.0.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...