使用js在php中动态显示/隐藏div控件?

时间:2009-10-15 05:57:02

标签: php javascript mysql css

我有一些SQL输出,可以格式化为可折叠的div。问题是我找到的所有JS显示/隐藏div代码并不真正意味着动态实例,它们都需要预先分配给特定的div。由于我的结果可能会在1-30之间变化......这不是一个很好的选择。

我的问题。有没有一种简单的方法可以为不同数量的层动态生成显示/隐藏控件?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

使用mootools(或jquery)实际上很容易。

您只需要为所有生成的div提供相同的类并选择所有它们并应用可折叠行为。

这是一个用mootools为我们的一个项目编写的小脚本,可能会让你顺利进行。它使用以toggle_开头的类来获取所有元素,并且在下划线之后的部分是该控件应该崩溃的div的id。

所以你用类'toggle_mydiv1'生成一个butteon,它会切换id为'mydiv1'的div

通过这种方式,您可以生成任意数量的元素,并使用一个脚本为所有元素分配行为。

写在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');
                        });
                    }
                }
            });
        }

    });
});