javascripthtmlangularjsangularjs-ng-showangularjs-ng-class

angularjs show/hide tabs, click same tab hide the content


when i click tab A, A content show

when i click tab B, A content hide B content show

but the effect i want is when i click tab A, A content show, click A tab again content hide.

Any suggest will be help thanks

<ul class="row text-center">
                <li class="col col-33">
                    <a href="javascript:void(0);" ng-class="{selected: tab==a}" ng-click="tab = a ">a <i class="icon ion-arrow-down-b"></i></a>
                </li>
                <li class="col col-33">
                    <a href="javascript:void(0); "  ng-class="{selected: tab==b}" ng-click="tab = b ">b <i class="icon ion-arrow-down-b"></i></a>
                </li>
                <li class="col col-33">
                    <a href="javascript:void(0);"  ng-class="{selected: tab==c}" ng-click="tab = c ">c <i class="icon ion-arrow-down-b"></i></a>
                </li>
            </ul>
 <div class="a"  ng-show="tab == a">a</div>
 <div class="b"  ng-show="tab == b">b</div>
 <div class="c"  ng-show="tab == c">c</div>

Solution

  • You need to change your expression of ng-click to ng-click="tab = tab=='a'? null: 'a'"

    <ul class="row text-center">
        <li class="col col-33">
            <a href="javascript:void(0);" ng-class="{selected: tab=='a'}" ng-click="tab = tab=='a'? null: 'a'">
              a <i class="icon ion-arrow-down-b"></i>
              </a>
        </li>
        <li class="col col-33">
            <a href="javascript:void(0); " ng-class="{selected: tab=='b'}" ng-click="tab = tab=='b'? null: 'b' ">
              b 
            <i class="icon ion-arrow-down-b"></i></a>
        </li>
        <li class="col col-33">
            <a href="javascript:void(0);" ng-class="{selected: tab=='c'}" ng-click="tab = tab=='c'? null: 'c' ">
              c <i class="icon ion-arrow-down-b"></i>
            </a>
        </li>
    </ul>
    <div class="a" ng-show="tab == 'a'">a</div>
    <div class="b" ng-show="tab == 'b'">b</div>
    <div class="c" ng-show="tab == 'c'">c</div>