Reputation: 1594
I would like to have a button that changes data-icon class depending upon user selections
Example button would be:
<a href="#language2" data-rel="popup" data-role="button"
data-icon="english-flag" data-inline="true"
data-position-to="origin">
<span id="language3">English</span>
</a>
I'd like to know what javascript code I would need to implement in order to change the custom defined data-icon="english-flag"
to be instead data-icon="another-flag"
Thanks in advance.
Edit: The answer to my followup questions below on how to specify which button to affect can be found at; How to change a specific JQuery Mobile button icon with javascript
Upvotes: 2
Views: 6884
Reputation: 57309
jQuery Mobile has a predefined function:
$('a').buttonMarkup({ icon: "star" });
It is not enough to change an attribute, final button restyling must be done with .buttonMarkup( function.
Here's an official documentation: http://jquerymobile.com/demos/1.2.0/docs/buttons/buttons-options.html
And here's an example: http://jsfiddle.net/Gajotres/AmFKa/
Also, because you are creating a custom button it wont be enough just to change icon name, first you need to define it in your css like this:
<style type="text/css">
.ui-icon-edit {
background-image: url(icons-18-white.png); // This should be your picture
background-repeat: no-repeat;
background-position: -824px 50%;
}
</style>
We would add this new icon like this:
$('a').buttonMarkup({ icon: "edit" });
In this case we are adding picture edit. Now notice its cass name .ui-icon-edit, to add a new icon class you need to combine a .ui-icon- string with a icon name. In your case your class name would be .ui-icon-another-flag.
Upvotes: 8
Reputation: 2057
You can use $('selector').attr('data-icon', 'newValue')
to change the attribute.
Upvotes: 0
Reputation: 70052
Just pass in the value to the data function. See the documentation
$("#language2").data("icon", "another-flag");
Upvotes: 0