Подтвердить что ты не робот

JQuery Mobile не применяет стили после динамического добавления контента

Я знаю, что эти вопросы появляются в нескольких местах (Принуждение jQuery Mobile для переоценки стилей/темы на динамически вставленном содержимом), но не с ответом, который работает на меня.

Я загружаю некоторый контент с помощью ajax и вставляю его в div следующим образом:

       $.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();
            }
        });

Я попытался установить targetRefresh как на цель, которую я добавляю html, так и на страницу, но не повезло. Конец вставлен, но стили не применяются.

Я также пробовал

.trigger("enhance")

Любая идея, что делать?

Вставляемый html - это куча:

<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>

Спасибо за любую помощь

Larsi

4b9b3361

Ответ 1

Попробуйте вызвать .trigger("create") для элемента с новым контентом.

Согласно jQuery Mobile docs, "Событие create подходит для улучшения сырой разметки, содержащей один или несколько виджетов."

EDIT: с jQuery Mobile 1.4, .trigger('create') устарел, и вы должны использовать .enhanceWithin() вместо. (Спасибо Джону Максу за хедз-ап.)

Ответ 2

Это работало для меня для просмотра списка

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

Также вы можете обновить складные

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

Ответ 3

Когда я попробовал решения выше, я получил сообщение об ошибке в Firebug

uncaught exception: не может вызывать методы в представлении списка до инициализации; попытался вызвать метод 'refresh'

Я нашел исправление для этого, но вместо вызова .trigger("create") после добавления новых элементов, которые я назвал

$("ul").listview();

в конце функции обратного вызова ajax.

У меня все хорошо работает для меня. Надеюсь, поможет.

Ответ 4

Для тех, кто пропустил это выше, для повторного применения стилей JQM после динамического добавления контента сделайте следующее:

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