Skip to main content

How can you adjust the height of a jquery UI accordian?


In my UI I have an accordian setup that so far functions




<div id="object_list">
<h3>Section 1</h3>
<div>...content...</div>

// More sections
</div>



The accordian works properly when it is first formed, and it seems to adjust itself well for the content inside each of the sections. However, if I then add more content into the accordian after the .accordian() call (via ajax), the inner for the section ends up overflowing.



Since the accordian is being formed with almost no content, all the inner divs are extremely small, and thus the content overflows and you get accordians with scrollbars inside with almost no viewing area.



I have attempted to add min-height styles to the object_list div, and the content divs to no avail. Adding the min-height to the inner divs kind of worked, but it messed up the accordian's animations, and adding it to the object_list div did absolutely nothing.



How can I get a reasonable size out of the content sections even when there is not enough content to fill those sections?


Source: Tips4allCCNA FINAL EXAM

Comments

  1. When you declare the accordion control div, you can put a height in the style tag for the div. Then you can set the fillSpace: true property to force the accordion control to fill that div space no matter what. This means you can set the height to whatever works best for you page. You could then change the height of the div when you add your code

    If you want the accordion to dynamically resize to the content it contains as needed you can do the following trick posted on the jQuery UI website.

    //getter
    var autoHeight = $( ".selector" ).accordion( "option", "autoHeight" );
    //setter
    $( ".selector" ).accordion( "option", "autoHeight", false );


    This means when you select an area with a lot of text, the accordion will recalculate it.

    ReplyDelete
  2. From the docs it sounds like you'll need to set

    clearStyle: true


    ...and also

    autoHeight: false


    I believe that using clearStyle allows you to dynamically add content without Accordion getting in the way.

    So try this...

    $( ".selector" ).accordion({ clearStyle: true, autoHeight: false });

    ReplyDelete
  3. Just call the accordions .resize() method, this will recalculate its size.
    http://docs.jquery.com/UI/Accordion#method-resize

    ReplyDelete

Post a Comment

Popular posts from this blog

[韓日関係] 首相含む大幅な内閣改造の可能性…早ければ来月10日ごろ=韓国

div not scrolling properly with slimScroll plugin

I am using the slimScroll plugin for jQuery by Piotr Rochala Which is a great plugin for nice scrollbars on most browsers but I am stuck because I am using it for a chat box and whenever the user appends new text to the boxit does scroll using the .scrollTop() method however the plugin's scrollbar doesnt scroll with it and when the user wants to look though the chat history it will start scrolling from near the top. I have made a quick demo of my situation http://jsfiddle.net/DY9CT/2/ Does anyone know how to solve this problem?

Why does this javascript based printing cause Safari to refresh the page?

The page I am working on has a javascript function executed to print parts of the page. For some reason, printing in Safari, causes the window to somehow update. I say somehow, because it does not really refresh as in reload the page, but rather it starts the "rendering" of the page from start, i.e. scroll to top, flash animations start from 0, and so forth. The effect is reproduced by this fiddle: http://jsfiddle.net/fYmnB/ Clicking the print button and finishing or cancelling a print in Safari causes the screen to "go white" for a sec, which in my real website manifests itself as something "like" a reload. While running print button with, let's say, Firefox, just opens and closes the print dialogue without affecting the fiddle page in any way. Is there something with my way of calling the browsers print method that causes this, or how can it be explained - and preferably, avoided? P.S.: On my real site the same occurs with Chrome. In the ex