简体   繁体   English

激活的toggleclass不能正常工作

[英]toggleclass active doesn't work properly

I want the menu to work like this. 我希望菜单像这样工作。 When you click Main1 it becomes active and the list will show, when you click it again the list will hide. 当您单击Main1时,它将变为活动状态,并且列表将显示;再次单击它,列表将隐藏。 When Main1 is active and you click Main2, then the Main1 should be inactive and Main2 active. 当Main1处于活动状态并且您单击Main2时,Main1应该处于非活动状态,而Main2应该处于活动状态。 But my Javascript doesn't seem to make it work well. 但是我的Javascript似乎无法使其正常运行。 It makes the Main1 inactive when you click Main2 and the other way, but if you click on any of the active Main it doesn't become incactive. 单击Main2或其他方法时,它将使Main1处于非活动状态,但是,如果单击任何活动的Main,它不会变得不活动。 Please help 请帮忙

    <div class="directory-section-list">
    <ul  class="list_item">
            <li class="li_lvl lvl0" id="bx_1847241719_2">Main1</li>
              <ul>
            <li class=""><span class="li_lvl lvl1">1.5-4.5</span>
              <ul>
            <li><a href="/directory/autoloader/1-1-8-tons/fd-15/58-fd-15.html">FD 15</a></li>
            <li><a href="/directory/autoloader/1-1-8-tons/fd-18/59-fd-18.html">FD 18</a></li>
              </ul>
              </ul>

     <ul  class="list_item">
            <li class="li_lvl lvl0" id="bx_1847241719_2">Main2</li>
              <ul>
            <li class=""><span class="li_lvl lvl1">1.5-4.5</span>
              <ul>                          
           <li><a href="/directory/autoloader/1-1-8-tons/fd-15/58-fd-15.html">FD 15</a></li>
           <li><a href="/directory/autoloader/1-1-8-tons/fd-18/59-fd-18.html">FD 18</a></li>
          </ul>
              </ul >
             </div>

Javascript Java脚本

$(' .list_item .lvl0').click(function(){
    $(".list_item.active").removeClass("active");
    $(this).parent().toggleClass('active');
});

$(' .list_item .lvl1').click(function(){
    $(this).parent().toggleClass('active');
});

Try this, 尝试这个,

 $('.list_item .lvl0').click(function(){ $('.directory-section-list .active').removeClass('active'); if ($(this).parent().hasClass('active')) { $(this).parent().removeClass('active'); } else { $(this).parent().addClass('active'); } }); $('.list_item .lvl1').click(function(){ $(this).parent().toggleClass('active'); }); 

Please try this 请尝试这个

HTML 的HTML

<div class="directory-section-list">
    <ul class="list_item">
        <li class="li_lvl lvl0" id="bx_1847241719_2">Main1</li>
        <ul>
            <li class=""><span class="li_lvl lvl1">1.5-4.5</span>
                <ul>
                    <li><a href="/directory/autoloader/1-1-8-tons/fd-15/58-fd-15.html">FD 15</a></li>
                    <li><a href="/directory/autoloader/1-1-8-tons/fd-18/59-fd-18.html">FD 18</a></li>
                </ul>
        </ul>
    </ul>
    <ul class="list_item">
        <li class="li_lvl lvl1" id="bx_1847241719_2">Main2</li>
        <ul>
            <li class=""><span class="li_lvl lvl1">1.5-4.5</span>
                <ul>
                    <li><a href="/directory/autoloader/1-1-8-tons/fd-15/58-fd-15.html">FD 15</a></li>
                    <li><a href="/directory/autoloader/1-1-8-tons/fd-18/59-fd-18.html">FD 18</a></li>
                </ul>
        </ul>
    </ul>
</div>

Java Script Java脚本

$(' .list_item .lvl0').click(function () {
   $(' .list_item .lvl1').parent().removeClass("active");
   $(this).parent().toggleClass('active');
});

$(' .list_item .lvl1').click(function () {
   $(' .list_item .lvl0').parent().removeClass("active");
   $(this).parent().toggleClass('active');
});

I think you want something like this? 我想你想要这样的东西吗?

 $(document).ready(function(){ $('.maindiv').hide(); $( "button" ).click(function() { $('.maindiv[data-link=' + $(this).data('link') + ']').toggle("fade",300); }); }); 
 div { background-color: green; color: white; width: 200px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> <button class="show" data-link="main1">Main1</button> <button class="show" data-link="main2">Main2</button> <div> <div class="maindiv" data-link="main1"> <h1>This is main1</h1> </div> <div class="maindiv" data-link="main2"> <h1>This is main2</h1> </div> </div> 

Sorry but your HTML List had a couple of errors the 抱歉,您的HTML列表有几个错误,

<li class=""><span class="li_lvl lvl1">1.5-4.5</span>

will never be closed... 永远不会关闭...

its all about the HTML Structure - i've done another change -> check the HTML Structure of this JS Fiddle: http://jsfiddle.net/marco_rensch/hzu76hgt/32/ 关于HTML结构的所有内容-我做了另一个更改->检查此JS Fiddle的HTML结构: http : //jsfiddle.net/marco_rensch/hzu76hgt/32/

Well Thank you all for your help. 好,谢谢大家的帮助。 I managed to do it taking some of your examples and making it work my own way. 我设法以您的一些示例来做到这一点,并以自己的方式使其工作。 Thank you again. 再次感谢你。 I will post the Javascript fix. 我将发布Javascript修复程序。

$(document).ready(function() {
          $('.li_lvl').click(function () {

            if ($(this).parent().hasClass('active')) {
                $(this).parent().removeClass('active');
            }
            else {
               $('.directory-section-list .active').removeClass('active');
                $(this).parent().addClass('active');
            }
        });

This will toggle class active of the parent .li_lvl which is the ul.list_item. 这将切换父.li_lvl(即ul.list_item)的活动类。 If parent has class active it will remove class active. 如果父级的班级处于活动状态,它将删除班级处于活动状态。 If any other list_item will have class active whilst you click on the other list_item, it will remove class active on the other list_item and make class active on the list_item you clicked. 如果您在单击另一个list_item时有其他list_item处于活动状态,则它将删除另一个list_item处于活动状态的类,并使您单击的list_item处于活动状态。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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