That depends on what you want to happen with the hidden divs.

Suppose you have added a <button>-<button> to every ".myPanel" div.
   <div class='myPanel'>1<button>-</button></div>

Scenario 1: hidden divs stay hidden and the next unopened div is shown

 var myPanels = $(".myPanel").hide();
  var nextPanel = 0;
 $(".myHeader button").click(function(){
   if (nextPanel < myPanels.length) {
     $(myPanels[nextPanel++]).slideDown();
   }
 });
 $(".myPanel button").click(function(){
   $(this).parent().slideUp();
 });

Scenario 1.1: hidden divs are removed from the DOM

 var myPanels = $(".myPanel").hide();
  var nextPanel = 0;
 $(".myHeader button").click(function(){
   if (nextPanel < myPanels.length) {
     $(myPanels[nextPanel++]).slideDown();
   }
 });
 $(".myPanel button").click(function(){
   $(this).parent().slideUp(function(){$(this).remove();});
 });

-or-

 var myPanels = $(".myPanel").hide();
 $(".myHeader button").click(function(){
   $(".myPanel:hidden:first").slideDown();
 });
 $(".myPanel button").click(function(){
   $(this).parent().slideUp(function(){$(this).remove();});
 });


Scenario 2: hidden divs are opened again, before the next unopened div is shown

 var myPanels = $(".myPanel").hide();
 $(".myHeader button").click(function(){
   $(".myPanel:hidden:first").slideDown();
 });
 $(".myPanel button").click(function(){
   $(this).parent().slideUp();
 });


by(e)
Stephan


2009/1/29 Kevin Rodenhofer <krodenho...@gmail.com>:
> Not bad at all...if I "remove" them with slideUp, in succession, how would I
> do that?
>
> On Wed, Jan 28, 2009 at 7:39 AM, Stephan Veigl <stephan.ve...@gmail.com>
> wrote:
>>
>> I'm not sure if I realy understand what you want to do, but it could
>> look something like
>>
>> HTML:
>>  <div id="root">
>>    <div class="myHeader"><button>+</button></div>
>>    <div class='myPanel'>1</div>
>>    <div class='myPanel'>2</div>
>>    <div class='myPanel'>3</div>
>>    <div class='myPanel'>4</div>
>>    <div class='myPanel'>5</div>
>> </div>
>>
>> JavaScript:
>>  var myPanels = $(".myPanel").hide();
>>  var nextPanel = 0;
>>  $(".myHeader button").click(function(){
>>    if (nextPanel < myPanels.length) {
>>      $(myPanels[nextPanel++]).slideDown();
>>    }
>>  });
>>
>> However, you may have problems if you delete or insert a panel.
>> A more flexible, but not so performat method would be:
>>
>> (same HTML)
>>
>> JavaScript:
>>  var myPanels = $(".myPanel").hide();
>>  $(".myHeader button").click(function(){
>>    $(".myPanel:hidden:first").slideDown();
>>  });
>>
>> by(e)
>> Stephan
>>
>> 2009/1/27 webopolis <krodenho...@gmail.com>:
>> >
>> > I want to have 1 "+" with x number of slide panels set to display:
>> > none; under it . When a user clicks the "+" a panel is revealed. Each
>> > time the "+" is clicked, the next panel is revealed, and so on. Each
>> > panel will have a "x" that can be clicked to close itself.
>> >
>> > I figure I would have to create an array for my collection of DIVs,
>> > then with clicks, iterate through each one until I have the desired
>> > number of panels revealed, or, I reach the end of the array.
>> >
>> > I just have no idea how to begin with this.
>> >
>> > Am I making any sense?
>> >
>
>

Reply via email to