• All geek questions in one place

    Add and Remove Class Based on Open Div

    I have this HTML code that comes with the following jQuery:

    <nav class="navigation">
        <ul>
            <li class="has-sub">iPad <i class="fa fa-angle-down"></i>
                <ul class="sub-menu">
                    <li><a href="iPadAir2.php">iPad Air 2 Review</a></li>
                    <li><a href="iPadAir.php">iPad Air Review</a></li>
                    <li><a href="iPadMini2.php">iPad mini 2 Review</a></li>
                </ul>
            </li>
            <li class="has-sub">iPhone <i class="fa fa-angle-down"></i>
                <ul class="sub-menu">
                    <li><a href="iPhone6.php">iPhone 6 Review</a></li>
                    <li><a href="iPhone5s.php">iPhone 5s Review</a></li>
                    <li><a href="iPhone5c.php">iPhone 5c Review</a></li>
                    <li><a href="iPhone5.php">iPhone 5 Review</a></li>
                    <li><a href="iPhone4s.php">iPhone 4s Review</a></li>
                </ul>
            </li>
            <li class="has-sub">Mac <i class="fa fa-angle-down"></i>
                <ul class="sub-menu">
                    <li><a href="MacBook.php">MacBook Review</a></li>
                    <li><a href="MacBookProRetina.php">MacBook Pro w/ Retina display Review</a></li>
                    <li><a href="MacBookPro.php">MacBook Pro Review</a></li>
                    <li><a href="MacBookAir.php">MacBook Air Review</a></li>
                </ul>
            </li>
        </ul>
    </nav>
    
    $(document).ready(function() {
        $(".has-sub").click(function() {
            $(this).find(".sub-menu").slideToggle(500);
            $(this).parent().children(".has-sub").not(this).find(".sub-menu").slideUp(500);
        });
    });
    

    As you can see, ihas a class fa-angle-down. When clicked, it opens li, but I would like to remove the class fa-angle-downand add the class fa-angle-upto the class i. Can someone please show me how I will do this?

    Thanks.

    EDIT:

    CSS for navigation below.

    nav {
        background : #034893;
        height : 50px;
    }
    
    nav ul,
    nav li,
    nav a { 
        margin : 0; 
        padding : 0;
    }
    
    nav > ul > li {
        color : white;
        display : block;
        float : left;
        font-size : 18px;
        line-height : 50px;
        position : relative;
        transition : all .3s linear;
        width : 25%;
        z-index : 999;
    }
    
    nav > ul > li:hover {
        background : #88bffc;
        color : #333;
        cursor : pointer;
    }
    
    nav > ul > li > ul {
        background : #034893;
        left : 0;
        margin : 0 auto;
        position : absolute;
        right : 0;
        text-align : left;
    }
    
    nav ul ul a {
        color : white;
        display : block;
        font-size : 14px;
        padding : 6px 12px;
    }
    
    nav ul ul a:hover {
        background : #88bffc;
    }
    
    +4
    jquery html css
    Chris Sep 05 '15 at 22:00
    source share
    4 answers

    EDITED . This works, it is verified that classes switch to the DOM. Editing was simply to toggle the .fa class, which toggles the button down / up for a menu item.

    $(".has-sub").click(function(e) {
        e.preventDefault;
        $this = $(this);
        $this.find(".sub-menu").slideToggle(500);
        $this.siblings(".has-sub").not(this).find(".sub-menu").slideUp(500);
        $this.find(".fa").toggleClass('fa-angle-down fa-angle-up');
        $this.siblings(".has-sub").not(this).find(".fa-angle-up").toggleClass('fa-angle-up fa-angle-down');
    });
    
    +1
    amespower Sep 05 '15 at 23:00
    source share

    <a> - , , preventDefault();. fa-angle-down <i>, , <li>. , , ? toggleClass. , , e.preventDefault();

    $(document).ready(function() {
    
      $(".has-sub").click(function(e) {
        // e.preventDefault();
    
        $(this).find(".sub-menu").slideToggle(500);
        $(this).parent().children(".has-sub").not(this).find(".sub-menu").slideUp(500);
        $('.fa').not(this).removeClass('fa-angle-down').addClass('fa-angle-up');
        $(this).find('.fa').toggleClass('fa-angle-down fa-angle-up');
    
      });
    });
    nav {
      background: #034893;
      height: 50px;
    }
    nav ul,
    nav li,
    nav a {
      margin: 0;
      padding: 0;
    }
    nav > ul > li {
      color: white;
      display: block;
      float: left;
      font-size: 18px;
      line-height: 50px;
      position: relative;
      transition: all .3s linear;
      width: 25%;
      z-index: 999;
    }
    nav > ul > li:hover {
      background: #88bffc;
      color: #333;
      cursor: pointer;
    }
    nav > ul > li > ul {
      background: #034893;
      left: 0;
      margin: 0 auto;
      position: absolute;
      right: 0;
      text-align: left;
    }
    nav ul ul a {
      color: white;
      display: block;
      font-size: 14px;
      padding: 6px 12px;
    }
    nav ul ul a:hover {
      background: #88bffc;
    }
    .fa.fa-angle-up:before {
      content: '\f106 ';
    }
    .fa.fa-angle-down:before {
      content: '\f107 ';
    }
    <link href="http://fortawesome.imtqy.com/Font-Awesome/assets/font-awesome/css/font-awesome.css" rel="stylesheet" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <meta charset="utf-8">
    <nav class="navigation">
      <ul>
        <li class="has-sub"><i class="fa fa-angle-up">iPad</i>
          <ul class="sub-menu">
            <li><a href="iPadAir2.php">iPad Air 2 Review</a>
            </li>
            <li><a href="iPadAir.php">iPad Air Review</a>
            </li>
            <li><a href="iPadMini2.php">iPad mini 2 Review</a>
            </li>
          </ul>
        </li>
        <li class="has-sub"><i class="fa fa-angle-up">iPhone</i>
          <ul class="sub-menu">
            <li><a href="iPhone6.php">iPhone 6 Review</a>
            </li>
            <li><a href="iPhone5s.php">iPhone 5s Review</a>
            </li>
            <li><a href="iPhone5c.php">iPhone 5c Review</a>
            </li>
            <li><a href="iPhone5.php">iPhone 5 Review</a>
            </li>
            <li><a href="iPhone4s.php">iPhone 4s Review</a>
            </li>
          </ul>
        </li>
        <li class="has-sub"><i class="fa fa-angle-up">Map</i>
          <ul class="sub-menu">
            <li><a href="MacBook.php">MacBook Review</a>
            </li>
            <li><a href="MacBookProRetina.php">MacBook Pro w/ Retina display Review</a>
            </li>
            <li><a href="MacBookPro.php">MacBook Pro Review</a>
            </li>
            <li><a href="MacBookAir.php">MacBook Air Review</a>
            </li>
          </ul>
        </li>
      </ul>
    </nav>
    Hide result
    +1
    zer00ne 05 . '15 22:10
        $(document).ready(function() { 
    $(".has-sub").click(function() {
    $(this).find('i.fa-angle-down').removeClass('fa-angle-down').addClass('fa-angle-up');
        $(this).find(".sub-menu").slideToggle(500);
     $(this).parent().children(".has-sub").not(this).find(".sub-menu").slideUp(500).parents('li').find('i.fa-angle-up').removeClass('fa-angle-up').addClass('fa-angle-down'); 
    }); 
    });
    
    0
    Ahmadbaba46 05 . '15 22:17

    jQuery . Sometihng :

    http://jsfiddle.net/j95en0Lp/1/

    HTML:

    <ul>
        <li class="fa-angle">Test (Click me to add a new class)</li>
    </ul>
    

    CSS

    .fa-angle{
        color: red;
        cursor: pointer;
    }
    
    .fa-angle-up{
        color: blue;
        cursor: pointer;
    }
    

    JQuery

    $(document).ready(function(){
        $(document).on('click', '.fa-angle', function(){
            $(this).addClass('fa-angle-up');
            $(this).removeClass('fa-angle');                     
        });
    
        $(document).on('click', '.fa-angle-up', function(){
            $(this).addClass('fa-angle');
            $(this).removeClass('fa-angle-up');                     
        });
    });
    

    , , , .. , .

    0
    Brian Moreno 05 . '15 22:31

    Source: https://habr.com/ru/post/1606099/

    More articles:

    • https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=https://fooobar.com/questions/1606094/why-can-i-get-access-to-static-method-of-my-super-class-from-child-instance&usg=ALkJrhiYkXgk0kYYdriFwlb4NcmX8XYBrg
    • Is there any way to save client ip in Redis? - redis
    • Как использовать плагин aurelia-dialog с Aurelia? - javascript
    • How does a static keyword work in Java? - java
    • How does the JVM handle a static variable? - java
    • https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=https://fooobar.com/questions/1606100/adding-strings-to-nested-lists-of-strings-if-list-doesnt-already-contain-said-string&usg=ALkJrhhsx-QKs1WpsEhuvSV409bDlewFCA
    • Correct message url for GCM device? - android
    • Visual Studio 2015 sometimes freezes when deploying a Xamarin application on a device - c #
    • Материальный дизайн Lite проблемы с разрешением Angular JS - angularjs
    • phantomjs - css transform rotate - javascript

    All Articles

    Geek Questions | 2019