How to dynamically change the jQueryUI icon of a button after initialization?

Michael Murphy picture Michael Murphy · Dec 15, 2010 · Viewed 14.7k times · Source
<script>
    $(function() 
    {
        $( "#dynabutton" ).button(
        {
            icons: 
            {
                primary: "ui-icon-gear"
            },
            text: false
        });

        $( "#swap" ).button(
        {
            icons: 
            {
                primary: "ui-icon-locked"
            },
            text: true
        }).click(function(event)
        {
            // change #dynabutton icon from
            // "ui-icon-gear"
            // to:
            // "ui-icon-locked"
        });         
    });
    </script>



<div class="demo">

<button id="dynamic_button">Button with gear icon</button>
<button id="swap">Swap icons</button>

</div>

On click of the #swap button, I want to switch the icon (jQueryUI icon) associated with #dynabutton from ui-icon-gear to ui-icon-locked.

But I don't know if this is supported?

Answer

Nick Craver picture Nick Craver · Dec 15, 2010

You can call .button("option", options) to set options later (like other jQuery UI widgets), including the icons:

$(function() {
    $( "#dynabutton" ).button({
        icons: { primary: "ui-icon-gear" },
        text: false
    });
    $( "#swap" ).button({
        icons: { primary: "ui-icon-locked" },
        text: true
    }).click(function() {
        $( "#dynabutton" ).button("option", {
          icons: { primary: "ui-icon-locked" }
        });
    });         
});

You can test it here.