2012-03-20 34 views
0

hy all,我正在創建一個手風琴菜單,當我按下「UNIT」選項卡時,會打開一個「章節」選項卡列表,當我按下任何一個章節時,課程列表打開。到目前爲止,我已經設法創建了所有適當的列表,但默認情況下,課程和章節會自動打開,而按下的課程元素不會回溯到章節父母。我的HTML5文件:如何操作ul括號

<script type="text/javascript" src="jqueryjs.js"></script> 
<script type="text/javascript" src="jqueryuiaccor.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#accordion').accordion(); 
    }); 
</script> 

<div id="container"> 
<div id="content"> 
<div id="sidebar"> 
     <ul id="accordion"> 
      <li> 
       <a href="#recent" class="heading">Unit 1</a>  
        <ul id="accordion">    
         <li> <a href="#recent" class="heading">Chapter 1 </a> </li> 
           <ul id="accordion2"> 
            <li> Lesson 1 </li> 
           </ul> 
        </ul> 
        </li> 
        <li> 
        <a href="#recent" class="heading">Unit 2</a>  

        <ul id="accordion">    
         <li> <a href="#recent" class="heading">Chapter 1 </a> </li> 
           <ul id="accordion"> 
            <li> <a href="#recent" class="heading" role="tab" aria-expanded="true">Chapter 2 </a> 
             <ul id="accordion"> 
              <li> <a href="#recent" class="heading">Lesson 1 </a></li> 
             </ul> 
            </li> 
           </ul> 
        </ul> 
      </li> 
     </ul>  
    </div> 
    </div> 
</div> 

我acorjs.js文件:

$(document).ready(function() { 
    $('ul#accordion a.heading').click(function() { 
     $(this).css('outline','none'); 
     if($(this).parent().hasClass('current')) { 
      $(this).siblings('ul').slideUp('slow',function() { 
       $(this).parent().removeClass('current'); 
       $.scrollTo('#accordion',1000); 

      }); 
     } else { 
      $('ul#accordion li.current ul').slideUp('slow',function() { 
       $(this).parent().removeClass('current'); 
      }); 
      $(this).siblings('ul').slideToggle('slow',function() { 
       $(this).parent().toggleClass('current'); 
      }); 
      $.scrollTo('#accordion',1000); 

     } 
     return false; 

    }); 

}); 

任何想法?

我的新編輯的文件:

<div id="container"> 
<div id="content"> 
<div id="sidebar"> 

     <ul class="accordion"> 
    <li> 
     <a href="#recent" class="heading">Unit 1</a>  
     <ul class="accordion">    
      <li> <a href="#recent" class="heading">Chapter 1 </a> </li> 
       <ul id="accordion2"> 
        <li> Lesson 1 </li> 
       </ul> 
     </ul> 
    </li> 

    <li> 
     <a href="#recent" class="heading">Unit 2</a>  
     <ul class="accordion">    
      <li> <a href="#recent" class="heading">Chapter 1 </a> </li> 
       <ul id="accordion2"> 
        <li> Lesson 1 </li> 
       </ul> 
     </ul> 
    </li> 



     </ul>  
    </div> 
    </div> 
</div> 

我的JS文件:

$(document).ready(function() { 
    $('ul.accordion a.heading').click(function() { 
     $(this).css('outline','none'); 
     if($(this).parent().hasClass('current')) { 
      $(this).siblings('ul').slideUp('slow',function() { 
       $(this).parent().removeClass('current'); 
       $.scrollTo('#accordion',1000); 
      }); 
     } else { 
      $('ul.accordion li.current ul').slideUp('slow',function() { 
       $(this).parent().removeClass('current'); 
      }); 
      $(this).siblings('ul').slideToggle('slow',function() { 
       $(this).parent().toggleClass('current'); 
      }); 
      $.scrollTo('#accordion',1000); 

     } 
     return false; 
    }); 
}); 

請幫一切都停止了工作

+0

元素ID應該是唯一的。通過ID訪問元素只會返回一個元素,如果沒有匹配,則返回null。如果有多個具有相同ID的元素,則行爲是未指定的 - 通常返回第一個元素,但不能保證這一點。 – RobG 2012-03-20 12:30:54

回答

2

嘗試給ul元素唯一的ID。單位和章節的ul具有「手風琴」作爲id。如果ID不是唯一的,事件功能可能只綁定到第一個或最後一個,但不是全部。或者,使「手風琴」成爲類而不是ID。然後你的jquery需要更改爲使用「ul.accordion」而不是「ul#accordion」。

這裏的顯示變化的HTML的一個片段:

<ul class="accordion"> 
    <li> 
     <a href="#recent" class="heading">Unit 1</a>  
     <ul class="accordion">    
     <li> <a href="#recent" class="heading">Chapter 1 </a> </li> 
     <ul id="accordion2"> 
      <li> Lesson 1 </li> 

然後換到JavaScript代碼:

$(document).ready(function() { 
    $('ul.accordion a.heading').click(function() { 
     $(this).css('outline','none'); 
     if($(this).parent().hasClass('current')) { 
      $(this).siblings('ul').slideUp('slow',function() { 
       $(this).parent().removeClass('current'); 
       $.scrollTo('#accordion',1000); 
      }); 
     } else { 
      $('ul.accordion li.current ul').slideUp('slow',function() { 
       $(this).parent().removeClass('current'); 
      }); 
      $(this).siblings('ul').slideToggle('slow',function() { 
       $(this).parent().toggleClass('current'); 
      }); 
      $.scrollTo('#accordion',1000); 

     } 
     return false; 
    }); 
}); 
+0

我感謝你的答案,但我真的很新在這個,我正在使用教程和東西自己。你能告訴我如何做到這一點。我提前感謝你 – 2012-03-20 12:33:18

+0

我改變了它,但沒有任何工作:S請參閱我編輯的問題,並幫助我:S – 2012-03-20 12:54:17

+0

我還沒有看到你對這個問題的任何編輯。如果您可以更清楚地瞭解您正在嘗試解決的具體問題,那將非常有幫助。你的問題有點含糊。 – 2012-03-20 12:57:08