jQuery Mobile no aplica estilos después de agregar contenido dinámicamente

Sé que estas preguntas aparecen en varios lugares ( obligando a jQuery Mobile a reevaluar estilos / tema en contenido insertado dinámicamente ) pero no con una respuesta que me funcione.

Estoy cargando algo de contenido usando ajax, e insertándolo en un div como este:

$.ajax({ url: "../Services/CalendarService.cshtml?service=true", cache: false, success: function (data) { data = $.parseJSON(data); var s = $("#user_tmpl").html(); var s1 = tmpl(s, data); $("#target").html(s1); $("#targetRefresh").page(); } }); 

Intenté configurar el targetRefresh en el objective al que estoy agregando el html y en la página, pero sin suerte. El contenido se inserta, pero los estilos no se aplican.

También intenté

 .trigger("enhance") 

¿Alguna idea de qué hacer?

Los html que insertó son un montón de estos:

 

MyOwner2AA

MyDescription

/Date(1320339836735)/

MyOwner

Gracias por cualquier ayuda

Larsi

Intenta llamar a .trigger("create") en el elemento con el nuevo contenido.

Según los documentos jQuery Mobile , “El evento create es adecuado para mejorar el marcado sin formato que contiene uno o más widgets”.

EDITAR : a partir de jQuery Mobile 1.4, .trigger('create') está en desuso , y debe usar .enhanceWithin() lugar. (Gracias a John Mc por el aviso).

Esto funcionó para mí para la vista de lista

 $('ul').listview('refresh'); 

También puedes actualizar el colapsable

 $('#element').collapsibleset('refresh') 

Cuando probé las soluciones anteriores recibí un mensaje de error en Firebug

excepción no detectada: no se pueden invocar métodos en la vista de lista antes de la inicialización; intentó llamar al método ‘actualizar’

Sin embargo, encontré una solución para esto, en lugar de llamar a .trigger("create") después de agregar los nuevos elementos que llamé

 $("ul").listview(); 

al final de la función de callback ajax.

Esto hizo que todo funcionara bien para mí. Espero eso ayude.

Para aquellos que se lo perdieron anteriormente, para volver a aplicar estilos JQM después de agregar contenido dinámicamente, haga esto:

 $('.myelement').html( myHtmlStr ).enhanceWithin();