jquery drop-down menu not working

I know wordpress has drop-down feature but for some reason it’s broken on the current theme and I need it to work it again. My current code works but when I click on a parent menu item it opens all the submenus. I need to open only the clicked element.

I posted my code on jsfiddle but for some reason on jsfiddle the jquery code doesn’t work.
jsfiddle

Read More

HTML

<ul id="menu-menu" class="navlinks"><li id="menu-item-257" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-2 current_page_item menu-item-257"><a href="#">Home</a></li>
<li id="menu-item-55" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-55"><a href="#">Menu Item</a></li>
<li id="menu-item-54" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-54"><a href="#">1</a>
<ul class="sub-menu">
<li id="menu-item-82" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-82"><a href="#">Menu Item</a></li>
</ul>
</li>
<li id="menu-item-83" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-83"><a href="#">Menu Item</a></li>
<li id="menu-item-56" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-56"><a href="#">Menu Item</a>
<ul class="sub-menu">
<li id="menu-item-296" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-296"><a href="#">1</a></li>
</ul>
</li>
<li id="menu-item-57" class="accessories menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-57"><a href="#">Accessories</a>
<ul class="sub-menu">
<li id="menu-item-320" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-320"><a href="#">1</a></li>
<li id="menu-item-319" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-319"><a href="#">2</a></li>
<li id="menu-item-317" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-317"><a href="#">3</a></li>
<li id="menu-item-318" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-318"><a href="#">4</a></li></ul>
</li>
</ul>

JQuery:

 $(document).ready(function() {
    $(".accessories").click(function() { //When trigger is clicked...

    //Following events are applied to the subnav itself (moving subnav up and down)
    $(this).parent().find(".sub-menu").slideDown('fast').show(); //Drop down the subnav on click

    $(this).parent().hover(function() {
    }, function(){  
        $(this).parent().find(".sub-menu").slideUp('slow'); //When the mouse hovers out of the subnav, move it back up
    });

    //Following events are applied to the trigger (Hover events for the trigger)
    }).hover(function() { 
        $(this).addClass("subhover"); //On hover over, add class "subhover"
    }, function(){  //On Hover Out
        $(this).removeClass("subhover"); //On hover out, remove class "subhover"
    });
});

Related posts

Leave a Reply

3 comments

  1. Try this out:- http://jsfiddle.net/adiioo7/5jA3C/2/

    JS:-

    $(document).ready(function() {
        $(".menu-item").click(function() { //When trigger is clicked...
    
            //Following events are applied to the subnav itself (moving subnav up and down)
            $(this).find(".sub-menu").slideDown('fast').show(); //Drop down the subnav on click
    
            $(this).hover(function() {
            }, function(){  
                $(this).find(".sub-menu").slideUp('slow'); //When the mouse hovers out of the subnav, move it back up
            });
    
            //Following events are applied to the trigger (Hover events for the trigger)
            }).hover(function() { 
                $(this).addClass("subhover"); //On hover over, add class "subhover"
            }, function(){  //On Hover Out
                $(this).removeClass("subhover"); //On hover out, remove class "subhover"
        });
     });
    
  2. Change into this:

    $(".accessories").click(function () { //When trigger is clicked...
    
        //Following events are applied to the subnav itself (moving subnav up and down)
        $(this).find(".sub-menu").slideDown('fast').show(); //Drop down the subnav on click
    
        $(this).hover(function () {}, function () {
            $(this).find(".sub-menu").slideUp('slow'); //When the mouse hovers out of the subnav, move it back up
        });
    
        //Following events are applied to the trigger (Hover events for the trigger)
    }).hover(function () {
        $(this).addClass("subhover"); //On hover over, add class "subhover"
    }, function () { //On Hover Out
        $(this).removeClass("subhover"); //On hover out, remove class "subhover"
    });
    

    you need the current element as selector not its parent.

    Side note: your jsfiddle demo not work because you have not selected any framework

    Demo: http://jsfiddle.net/XdgF7/

  3. HTML

               <ul class="menu" id="menu">
    <li><a href="#" class="menulink">Dropdown One</a>
        <ul>
            <li><a href="#">Navigation Item 1</a></li>
            <li>
                <a href="#" class="sub">Navigation Item 2</a>
                <ul>
                    <li class="topline"><a href="#">Navigation Item 1</a></li>
                    <li><a href="#">Navigation Item 2</a></li>
                    <li><a href="#">Navigation Item 3</a></li>
                    <li><a href="#">Navigation Item 4</a></li>
                    <li><a href="#">Navigation Item 5</a></li>
                </ul>
            </li>
            <li>
                <a href="#" class="sub">Navigation Item 3</a>
                <ul>
                    <li class="topline"><a href="#">Navigation Item 1</a></li>
                    <li><a href="#">Navigation Item 2</a></li>
                    <li>
                        <a href="#" class="sub">Navigation Item 3</a>
                        <ul>
                            <li class="topline"><a href="#">Navigation Item 1</a></li>
                            <li><a href="#">Navigation Item 2</a></li>
                            <li><a href="#">Navigation Item 3</a></li>
                            <li><a href="#">Navigation Item 4</a></li>
                            <li><a href="#">Navigation Item 5</a></li>
                            <li><a href="#">Navigation Item 6</a></li>
                        </ul>
                    </li>
                    <li><a href="#">Navigation Item 4</a></li>
                </ul>
            </li>
            <li><a href="#">Navigation Item 4</a></li>
            <li><a href="#">Navigation Item 5</a></li>
        </ul>
    </li>
    <li><a href="#" class="menulink">Non-Dropdown</a></li>
    <li>
        <a href="#" class="menulink">Dropdown Two</a>
        <ul>
            <li><a href="#">Navigation Item 1</a></li>
            <li>
                <a href="#" class="sub">Navigation Item 2</a>
                <ul>
                    <li class="topline"><a href="#">Navigation Item 1</a></li>
                    <li><a href="#">Navigation Item 2</a></li>
                    <li><a href="#">Navigation Item 3</a></li>
                </ul>
            </li>
        </ul>
    </li>
    

    CSS

       body {margin:25px; font:11px Verdana,Arial; background:#eee}
       ul.menu {list-style:none; margin:0; padding:0}
       ul.menu * {margin:0; padding:0}
       ul.menu a {display:block; color:#000; text-decoration:none}
       ul.menu li {position:relative; float:left; margin-right:2px}
       ul.menu ul {position:absolute; top:26px; left:0; background:#d1d1d1; display:none; opacity:0; list-style:none}
       ul.menu ul li {position:relative; border:1px solid #aaa; border-top:none; width:148px; margin:0}
       ul.menu ul li a {display:block; padding:3px 7px 5px; background-color:#d1d1d1}
       ul.menu ul li a:hover {background-color:#c5c5c5}
       ul.menu ul ul {left:148px; top:-1px}
       ul.menu .menulink {border:1px solid #aaa; padding:5px 7px 7px; font-weight:bold;    background:url(images/header.gif); width:134px}
       ul.menu .menulink:hover, ul.menu .menuhover {background:url(images/header_over.gif)}
       ul.menu .sub {background:#d1d1d1 url(images/arrow.gif) 136px 8px no-repeat}
       ul.menu .topline {border-top:1px solid #aaa}
    

    Scripts

           var menu=function(){
    var t=15,z=50,s=6,a;
    function dd(n){this.n=n; this.h=[]; this.c=[]}
    dd.prototype.init=function(p,c){
        a=c; var w=document.getElementById(p), s=w.getElementsByTagName('ul'), l=s.length, i=0;
        for(i;i<l;i++){
            var h=s[i].parentNode; this.h[i]=h; this.c[i]=s[i];
            h.onmouseover=new Function(this.n+'.st('+i+',true)');
            h.onmouseout=new Function(this.n+'.st('+i+')');
        }
    }
    dd.prototype.st=function(x,f){
        var c=this.c[x], h=this.h[x], p=h.getElementsByTagName('a')[0];
        clearInterval(c.t); c.style.overflow='hidden';
        if(f){
            p.className+=' '+a;
            if(!c.mh){c.style.display='block'; c.style.height=''; c.mh=c.offsetHeight; c.style.height=0}
            if(c.mh==c.offsetHeight){c.style.overflow='visible'}
            else{c.style.zIndex=z; z++; c.t=setInterval(function(){sl(c,1)},t)}
        }else{p.className=p.className.replace(a,''); c.t=setInterval(function(){sl(c,-1)},t)}
    }
    function sl(c,f){
        var h=c.offsetHeight;
        if((h<=0&&f!=1)||(h>=c.mh&&f==1)){
            if(f==1){c.style.filter=''; c.style.opacity=1; c.style.overflow='visible'}
            clearInterval(c.t); return
        }
        var d=(f==1)?Math.ceil((c.mh-h)/s):Math.ceil(h/s), o=h/c.mh;
        c.style.opacity=o; c.style.filter='alpha(opacity='+(o*100)+')';
        c.style.height=h+(d*f)+'px'
    }
    return{dd:dd}
      **strong text**}();