简体   繁体   中英

Why is my jQuery toggle not working?

I'm trying to set up a side menu and having some trouble with the jQuery Toggle. Everything else seems to function fine. I did try for a about 2 hours before posting here, so been getting a little frustrated (seeing how this is pretty basic stuff). Any suggestions?

Below is the format and exact order of my page layout, I only added separator text ("The side menu", "Image I click..", etc.) to make reading/understanding easier. Any help would be greatly appreciated.

The side menu:

<div id="SideMenu" class="sidenav">
    <img class="CloseBtn" src="./wht_menu.png" />
    <a href="#">Link 1</a>
    <a href="#">Link 2</a>
    <a href="#">Link 3</a>
    <a href="#">Link 4</a>
    <a href="#">Link 5</a>
</div>

Image I click to open the menu:

<img class="OpenBtn" src="./blk_menu.png" />

The rest of my page:

<div id="main">
My main page content goes here...
</div>

My CSS & jQuery:

<!--Slider Menu-->
<script>
$(".OpenBtn").click(function() {
$("#SideMenu").fadeToggle("fast", "swing");
});
</script>
<style>
#SideMenu{
width: 250px;
display: none;
}
</style>

You need to wrap the jQuery in this block ( docs ):

$( document ).ready(function() {
    $(".OpenBtn").click(function() {
    $("#SideMenu").fadeToggle("fast", "swing");
    });
});

Working example using your code:

http://codepen.io/anon/pen/xEaqqA

There is a possibility that jQuery not loaded on page at the time.

<script>
(function($){
    $(document).ready(function(){
        $(".OpenBtn, .CloseBtn").click(function() {
            $("#SideMenu").fadeToggle("fast", "swing");
        });
    });
})(jQuery);
</script>

Thanks for your help everyone! Although pivemi's answer was not the solution, a deeper review of his codepen link got things working, my doc wasn't calling on the jQuery library. Adding this to the top was my solution:

<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>

Your CSS could look like this:

.menu {
position: fixed;
height: 100%;
width: 272px;
padding-bottom: 50px;
overflow: auto;
box-shadow: 0 0 10px 0 rgba(0,0,0,.75);
background-color: #fff;
z-index: 999;
display: none;}

And your jQuery script:

$(document).ready(function(){
$('.show-menu').click(function(){
    fade_menu();
});
$('.menu-item').click(function(){
    fade_menu();
});});});

function fade_menu(){
        $('.menu').fadeToggle("fast");
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM