ajax - jQuery Mobile no aplica estilos después de agregar contenido dinámicamente
jquery-mobile (4)
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 devolución de llamada ajax.
Esto hizo que todo funcionara bien para mí. Espero eso ayude.
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 objetivo 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:
<div data-theme="e" data-collapsed="true" data-role="collapsible"> <h3>MyOwner2AA</h3> <p>MyDescription</p> <p>/Date(1320339836735)/</p> <p>MyOwner</p> <i></i> </div>
Gracias por cualquier ayuda
Larsi
Esto funcionó para mí para la vista de lista
$(''ul'').listview(''refresh'');
También puedes actualizar el colapsable
$(''#element'').collapsibleset(''refresh'')
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).
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();