views:

6467

answers:

1

I have Nested Accordion menu The Logic is simple I have 2 menu 1a & 1b

Onclicking 1a i will get the dataof 1a and two submenu 2a,2b Onclick of 2a ,2b i will get the data of respectively

The problem,now is at a time one data should visible!

In mycase after pressing 1b the 2b will not hide the data.

How to do effectively write code so that one time only one data will be visible?Like similar Nested Menu

And also During start ,only 1a &1b should visible!

My Code

$(document).ready(function() {

     $("#acc1").accordion({
                  active:".ui-accordion-left", 
      alwaysOpen: false,
      autoheight: false,
      header: 'a.acc1',
      clearStyle: true
     });
     $("#acc2").accordion({
      alwaysOpen: false,
      autoheight: false,
      header: 'a.acc2',
      clearStyle: true
     });

        });
    </script>
</head>
<body>
<ul id="acc1" class="ui-accordion-container">
    <li>
     <div class="ui-accordion-left">
            </div>
                  <a class="ui-accordion-link acc1">1a
                     <span class="ui-accordion-right"></span>
                      </a>
                      <div>
       data of 1a<br/>
               data of 1a<br/>
       data of 1a<br/>
      </div>

            <div>

      <ul class="ui-accordion-container" id="acc2">
       <li>
        <div class="ui-accordion-left">
                              </div>
        <a class="ui-accordion-link acc2">2a
        <span class="ui-accordion-right"></span>
                             </a>
        <div>
        data of 2a<br/>
        data of 2a<br/>
        data of 2a<br/>
        </div>
       </li>
       <li>
        <div class="ui-accordion-left">
                              </div>
        <a class="ui-accordion-link acc2">2b
        <span class="ui-accordion-right"></span></a>
        <div>
             data of  2b<br/>
        data of 2b<br/>
        data of 2b<br/>
        </div>
       </li>
      </ul>
     </div>
      </li>
    <li>

            <div class="ui-accordion-left"></div>
           <a class="ui-accordion-link acc1">1b
      <span class="ui-accordion-right"></span></a>
            <div>
             data of 1b<br />
            data of 1b<br />
            dta of 1b <br />
            </div>

    </li>
</ul>

</body>
+1  A: 

Just a few changes to the order of the elements in your HTML and you get the behavior you are looking for. At the start now only 1a and 1b are open. Similarly when you click on 1b now it will close 1a which will hide any open 2a/2b section as well.

$(document).ready(function() {

    $("#acc1").accordion({
            active:".ui-accordion-left", 
            alwaysOpen: false,
            autoheight: false,
            header: 'a.acc1',
            clearStyle: true
    });
    $("#acc2").accordion({
   active:".ui-accordion-left", 
            alwaysOpen: false,
            autoheight: false,
            header: 'a.acc2',
            clearStyle: true
    });

});

<ul id="acc1" class="ui-accordion-container">
    <li>
        <div class="ui-accordion-left">
            </div>
                  <a class="ui-accordion-link acc1">1a
                     <span class="ui-accordion-right"></span>
                      </a>
                      <div>
                        data of 1a<br/>
                        data of 1a<br/>
                        data of 1a<br/>
         <ul class="ui-accordion-container" id="acc2">
                        <li>
                                <div class="ui-accordion-left">
                              </div>
                                <a class="ui-accordion-link acc2">2a
                                <span class="ui-accordion-right"></span>
                             </a>
                                <div>
                                data of 2a<br/>
                                data of 2a<br/>
                                data of 2a<br/>
                                </div>
                        </li>
                        <li>
                                <div class="ui-accordion-left">
                              </div>
                                <a class="ui-accordion-link acc2">2b
                                <span class="ui-accordion-right"></span></a>
                                <div>
                              data of           2b<br/>
                                data of 2b<br/>
                                data of 2b<br/>
                                </div>
                        </li>
                </ul>
                </div>
      </li>
    <li>
              <div class="ui-accordion-left"></div>
                <a class="ui-accordion-link acc1">1b
                <span class="ui-accordion-right"></span></a>
               <div>
                data of 1b<br />
                      data of 1b<br />
                      dta of 1b <br />
               </div>
    </li>
</ul>
</body>
jeremyasnyder