Jquery Mobile: Dynamically change the text of the header of a collapsible div?

后端 未结 4 998
别那么骄傲
别那么骄傲 2021-01-05 03:34

Place:

相关标签:
4条回答
  • 2021-01-05 03:43

    In 1.3.2, the following seem to work:

    <div id="MyID" data-role="collapsible" >    
        <h3><span id="MyHeaderID">My Header</span></h3>    
        <!-- My Content --> 
    </div>
    

    JQuery:

    $("#MyID h3 #MyHeaderID").text("Your New Header");
    

    Happy Coding!

    0 讨论(0)
  • 2021-01-05 03:55

    A simple solution would be

    $('#collapsePlace .ui-btn-text').text("hello ");
    

    Check out the fiddle at http://jsfiddle.net/AQZQs/1/

    0 讨论(0)
  • 2021-01-05 03:57

    The actual HTML structure of a collapsible in jQuery Mobile 1.0RC2 is the following (after the framework has made its pass on the HTML):

    <div id="collapsePlace" data-content-theme="e" data-role="collapsible" class="ui-collapsible ui-collapsible-collapsed">
        <h3 class="ui-collapsible-heading ui-collapsible-heading-collapsed">
            <a class="ui-collapsible-heading-toggle ui-btn ui-btn-icon-left ui-corner-top ui-corner-bottom ui-btn-up-c" href="#" data-theme="c">
                <span aria-hidden="true" class="ui-btn-inner ui-corner-top ui-corner-bottom">
                    <span class="ui-btn-text">Place:
                        <span class="ui-collapsible-heading-status"> click to expand contents</span>
                    </span>
                    <span class="ui-icon ui-icon-plus ui-icon-shadow"></span>
                </span>
            </a>
        </h3>
        <div class="ui-collapsible-content ui-body-e ui-collapsible-content-collapsed" aria-hidden="true">
            <!--things...-->
        </div>
    </div>
    

    The nested <span> element within the <span class="ui-btn-text"> element makes this a little tricky. If you want to preserve the structure of the <span class="ui-btn-text"> element you will need to save the nested <span> element, overwrite it, and then replace it:

    //run code on document.ready
    $(function () {
        var num = 1;
        //add click handler to link to increment the collapsible's header each click
        $('a').bind('click', function () {
            //cache the `<span class="ui-btn-text">` element and its child
            var $btn_text  = $('#collapsePlace').find('.ui-btn-text'),
                $btn_child = $btn_text.find('.ui-collapsible-heading-status');
            //overwrite the header text, then append its child to restore the previous structure
            $btn_text.text('New String (' + num++ + ')').append($btn_child);
        });
    });
    

    Here is a jsfiddle of the above solution: http://jsfiddle.net/jasper/4DAfn/2/

    0 讨论(0)
  • 2021-01-05 04:07

    An easy option is to give the h3 a custom id/class, for example:

    <div data-role="collapsible" data-content-theme="e" id="collapsePlace">
        <h3 id='h3Text'>Place:</h3>
        <!--things...-->
    </div>
    

    That way you only will need to do:

    $('#collapsePlace #h3Text').text('new text');
    
    0 讨论(0)
提交回复
热议问题