JScrollPane Dynamic Height

The demo page referenced can be found here.

I’m trying to determine a way that on the click of a parent category (ex: Stone Tiles, Stone Sinks), that the JScrollPane would re-determine the current height and adjust as needed. Unfortunately, my attempts to do so have not worked yet.

Read More

I referenced the example here which provided the following function (to do a refresh)…

api.reinitialise();

I’ve tried to setup this function to be triggered by the category parents like so…

var pane = $('.menuwrap')
pane.jScrollPane();
var api = pane.data('jsp');
var i = 1;

$("li.expandable.parent").click(function() {
api.reinitialise();
});

Unfortunately, while I was able to verify the click is being rendered, the function (api.reinitialize) doesn’t appear to be working. I’m hoping that a fresh pair of eyes could point me in the right direction. 🙂

Thanks!

Related posts

Leave a Reply

2 comments

  1. The problem is that api.reinitialise executes immediately after the click, and the li element will not have expanded yet so when jscroll pane goes to to recalculate the height it gets it wrong. You can try adding a delay but the best solution would be to bind api.reinitialise() to an event that’s triggered once the your list has finished expanding. I’m not sure how you’re expanding the div within the li but if for instance it’s using .animate, you could bind the api.reinitialise to the animation complete event.

    Also noted that not all the parent li’s have the class parent associated it to them. I would expect you would want the pane to reinitialize on the expansion and collapsing of all the main li elements.

    Hope that helps !

    Cheers 🙂

  2. What you can do is have your inner divs expanded by default, and then close them with jquery, rather than in the CSS directly.

    So instead of doing this:

    .mydiv.closed {display:none}
    

    do this in your jquery after the elements are drawn to the page:

    $('.mydiv.closed').hide();
    

    This will load the jscrollpane at the necessary height, and then collapse what you want to be initially hidden.