2009-10-15 67 views
1

我有一些SQL輸出的id喜歡格式化爲可摺疊的div。問題是,我發現所有的JS顯示/隱藏div代碼並不是真正意義上的動態實例,它們都需要預先分配給特定的div。由於我的結果可能會從1-30變化...這不是一個很好的選擇。動態顯示/隱藏div與js的PHP控制?

我的問題。是否有一種簡單的方法來爲不同數量的圖層動態生成顯示/隱藏控件?

+0

請提供您目前所完成的代碼,使我們中的一些喜歡誰理解代碼能理解你的問題,更好=) – mauris 2009-10-15 06:01:52

+1

這將是那些「使用一個jquery「的問題對不對? – cletus 2009-10-15 06:07:17

回答

2
<div id="CollapsiblePanel1" class="CollapsiblePanel"> 
    <div class="CollapsiblePanelTab" tabindex="0">Tab</div> 
    <div class="CollapsiblePanelContent">Content</div> 
</div> 
<script type="text/javascript"> 
<!-- 
var CollapsiblePanel1 = new Spry.Widget.CollapsiblePanel("CollapsiblePanel1"); 
//--> 
</script> 
+0

請提供一些更多關於這裏發生的情況。請原諒我的天真。謝謝 – pal4life 2013-07-08 18:37:45

0

它實際上很容易與mootools(或jQuery的事情)。

您只需要爲所有生成的div提供相同的類並選擇所有這些類並應用可摺疊行爲。

這是一個用mootools編寫的用於我們項目之一的小腳本,可能會幫助您解決問題。它獲取以toggle_開頭的類的所有元素,並且下劃線之後的部分是該控件應該摺疊的div的id。

所以你生成類的toggle_mydiv1「這將觸發一個div id爲「爲myDiv1」

這樣,只要你想,你可以產生儘可能多的元素,並用一個腳本分配行爲,向他們的butteon。

寫在mootools的:

window.addEvent('domready', function(){ 

    var clickAbles = $$('form[class^=toggle_]'); 
    clickAbles.each(function(el){ 
     var _class = el.get('class').split(' '); 
     var clickElement = _class[0].replace('toggle_',''); 
     clickElement = $$('ul.buttons li.'+clickElement+' a'); 

     if(clickElement){ 

      var myFx = new Fx.Tween(el,{duration: 'long'}); 
      var myFx2 = new Fx.Tween(el,{duration: 'long'}); 
      el.store('height', el.getSize().y); 
      el.store('state', 'close'); 
      el.setStyles({'display': 'none', 'height': 0}); 

      var todoLists = el.getElements('ul.todo_list'); 
      clickElement.addEvent('click', function(e){ 
       e.stop(); 

       if(el.retrieve('state') == "close"){ 
        el.setStyle('display','block'); 
        myFx.start('height', [0,el.retrieve('height')]); 

        myFx.addEvent('complete', function(){ 
         todoLists.setStyles({'overflow': 'auto'}); 
         el.store('state', 'open'); 
        }); 
       } else { 
        if(el.retrieve('state') == "open"){ 
         myFx2.start('height', [el.retrieve('height'),0]); 
         myFx2.addEvent('complete', function(){ 
          el.setStyles({'display': 'none', 'height': 0}); 
          todoLists.setStyles({'overflow': 'hidden'}); 
          el.store('state', 'close'); 
         }); 
        } 
       } 
      }); 
     } 

    }); 
});