javascriptjqueryjquery-mobilejquery-mobile-collapsible

jquery mobile collapsible widget styling not working


I am trying to include a collapsible widget in jquery mobile. The content is dynamic so I am using a markup to do this, but just for illustration I have included default text. The following code just brings no widget but just the text appears, the styling of the widget doesn't appear. Here is my javascript

  description_markup += '<h4>Description heading</h4><p>'+description+'</p>'; 

   $('#Desc').empty().append(description_markup);

HTML

 <div data-role="content" class= "ui-content" data-theme="d">
       <p id="message"/>
       <div id ="videoDisplay"></div>
       <div id ="vidLikeDislikebutton"></div>
        <div id ="Desc" data-role="collapsible"
             data-theme="b" data-content-theme="b"
             class="ui-collapsible ui-collapsible-inset
                    ui-collapsible-themed-content">
       </div>
</div><!-- /content -->

when I put the Desc div outside the content div, the text appears with a black background.

Please help


Solution

  • jQuery Mobile team is still working on creating methods for collapsible such as refresh. Unfortunately, collapsible doesn't accept any method now. Thus, replacing current collapsible with a new one is the only way.

    Demo

    var description_markup = '<div data-role="collapsible" id="Desc" data-theme="e" data-content-theme="b"><h3>Description heading</h3><p>collapsible</p></div>';
    $('#Desc').replaceWith(description_markup);
    $('#Desc').collapsible();
    

    If collapsible is enhanced and you don't want to replace it, you still can do modifications.

    $('#Desc .ui-btn-text').text('new header');
    $('#Desc .ui-collapsible-content').append('<p>new content</p>');
    

    Inserting widgets inside collapsible requires .trigger('create') to enhance widget markup

    $('#Desc .ui-collapsible-content').append('<ul data-role="listview"><li><a>link</a></li><li><a>link</a></li></ul>').trigger('create');