Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have trouble with this jquery code:

jQuery(document).ready(function($) {
    if ($('#left-menu').hasClass('active')){
        console.log(true);
        $("#submenu").css("display", "block");
    };
});

With this function I need to add .css display block to submenu

<ul>
    <li>
        <a class="active" id="left-menu">Test</a>
        <ul style="display: none" id="submenu">
            <li>test</li>
            <li>test</li>
        <ul>
    </li>
    <li>
        <a id="left-menu">Test 2 </a>
        <ul style="display: none" id="submenu">
            <li>test</li>
            <li>test</li>
        <ul>
    </li>
</ul>

And now I will describe where is problem. When is active first link everything is ok and jquery add .css display: block. But when is active second link jquery do not add .css display: block.

Can you someone help me? Thank you.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
269 views
Welcome To Ask or Share your Answers For Others

1 Answer

IDs must be unique, so use instead: (and close all UL tags)

<ul>
    <li>
        <a class="left-menu">Test</a>
        <ul style="display: none" class="submenu">
            <li>test</li>
            <li>test</li>
        </ul>
    </li>
    <li>
        <a class="left-menu active">Test 2 </a>
        <ul style="display: none" class="submenu">
            <li>test</li>
            <li>test</li>
        </ul>
    </li>
</ul>

And then:

jQuery(document).ready(function($) {    
        $(".left-menu.active").next('.submenu').show();
});

BTW, you could use: $(".left-menu.active").next('.submenu').show();

SEE DEMO


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...