Нет обновления стиля jquery после обновления списка ajax

Я обновляю список с помощью калитки. Список будет обновлен (сделан ajax-запрос, отправлен ответ и список обновлен). Пока все в порядке.

После обновления списка я вызываю метод javascript/jquery $('ul').listview('refresh') для (повторного) добавления всех необходимых стилей jquery. Но этого не произойдет. (Обновленный) список будет отображаться без стиля.

Есть ли идея, что мне не хватает?

HTML-часть:

...
<ul id="sitzungenList" wicket:id="sitzungenListContainer" data-role="listview" data-divider-theme="b" data-inset="true">
    <li wicket:id="sitzungen" data-theme="c">
        <a href="#page2" data-transition="slide">
            <span wicket:id="sitzungName">[Sitzung]</span>
        </a>
    </li>
</ul>
...

Java-часть (инициализация списка):

...
final WebMarkupContainer sitzungenListContainer = new WebMarkupContainer("sitzungenListContainer");
        sitzungenListContainer.setOutputMarkupId(true);
        sitzungenForm.add(sitzungenListContainer);
        final ListView<Meeting> sitzungenList = new ListView<Meeting>("sitzungen", meetingsService.getAll(Meeting.class)) {
            @Override
            protected void populateItem(ListItem<Meeting> listItem) {
                listItem.add(new Label("sitzungName", listItem.getModelObject().getName()));
            }
        };
        sitzungenListContainer.add(sitzungenList);
...

И, наконец, обновление списка (внутри метода onSubmit AjaxButton):

...
sitzungenList.setList(meetingsService.getMeetings(sitzungenSearchParam));
target.add(sitzungenListContainer);
target.appendJavaScript("$('ul').listview('refresh')");
...

person magomi    schedule 16.04.2012    source источник
comment
Провел еще несколько тестов - окно отладки Wicket Ajax показывает следующую ошибку: ERROR: Wicket.Ajax.Call.processEvaluation: Exception evaluating javascript: cannot call methods on listview prior to initialization; attempted to call method 'refresh' .   -  person magomi    schedule 16.04.2012


Ответы (1)


Благодаря функциям Wicket AJAX вы заменяете полный узел DOM для тега <ul> и его дочерних элементов. Поэтому JQuery не распознает <ul> как список. В соответствии с ответом на этот вопрос вам нужно вызвать конструктор списка вместо обновления:

target.appendJavaScript("$('ul').listview()");
person Martijn Dashorst    schedule 16.04.2012
comment
Спасибо Мартейн! Теперь работает как шарм. - person magomi; 16.04.2012