在ajax更新列表后没有更新jquery样式

时间:2012-04-16 09:23:43

标签: jquery jquery-mobile wicket wicket-1.5

我正在使用wicket更新列表。该列表将被更新(发出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);
...

最后更新列表(在AjaxButton的onSubmit方法内):

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

1 个答案:

答案 0 :(得分:2)

使用Wicket的AJAX功能,您替换 <ul>标记及其子标记的完整DOM节点。因此,JQuery不会将<ul>识别为列表视图。根据{{​​3}},您需要调用listview构造函数而不是refresh:

target.appendJavaScript("$('ul').listview()");