Powyższa odpowiedź bardzo mi pomogło, Zmodyfiowałem ją trochę na moje potrzeby, ponieważ używam themeroller i oczekuję więcej niż 20 motywów. Oto co mam zrobić
function updateTheme(newTheme) {
//alert("In refresh");
var rmbtnClasses = '';
var rmhfClasses = '';
var rmbdClassess = '';
var arr = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" ];
$.each(arr,function(index, value){
rmbtnClasses = rmbtnClasses + " ui-btn-up-"+value + " ui-btn-hover-"+value;
rmhfClasses = rmhfClasses + " ui-bar-"+value;
rmbdClassess = rmbdClassess + " ui-body-"+value;
});
// reset all the buttons widgets
$.mobile.activePage.find('.ui-btn').not('.ui-li-divider').removeClass(rmbtnClasses).addClass('ui-btn-up-' + newTheme).attr('data-theme', newTheme);
// reset the header/footer widgets
$.mobile.activePage.find('.ui-header, .ui-footer').removeClass(rmhfClasses).addClass('ui-bar-' + newTheme).attr('data-theme', newTheme);
// reset the page widget
$.mobile.activePage.removeClass(rmbdClassess).addClass('ui-body-' + newTheme).attr('data-theme', newTheme);
// target the list divider elements, then iterate through them and
// change its theme (this is the jQuery Mobile default for
// list-dividers)
$.mobile.activePage.find('.ui-li-divider').each(function(index, obj) {
$(this).removeClass(rmhfClasses).addClass('ui-bar-' + newTheme).attr('data-theme',newTheme);
})
Teraz, gdy pojawia się nowy motyw z serwerem poprzez json po prostu wywołać tę metodę z nowym tematem jako param.
Pozdrowienia Rajesh J
ja używam list-dzielnik w mojej aplikacji statycznie to zmienia się dynamicznie, ale to nie zmienia, że jest jedynym problemem. –
@kanna Zaktualizowałem swoją odpowiedź, 'data-role =" lista-dzielnik "' s wymaga trochę logiki, aby je poprawnie, ale myślę, że moja odpowiedź jest całkiem kompletna: http://jsfiddle.net/VNXb2/7/ – Jasper
@kanna Inna myśl, jeśli zmienisz motyw widżetu, zanim zostanie zainicjalizowany, to zostanie poprawnie zainicjowany w wybranym przez ciebie temacie. W przypadku powiązania ze zdarzeniem 'pageInit' widżety nie powinny być inicjowane i można zmienić motyw strony lub dowolne elementy na stronie. – Jasper