小编典典

带有AJAX内容listview('refresh')的JQM(jQueryMobile)问题不起作用

ajax

这是我在做什么的模拟:

function loadPage(pn) {
    $('#'+pn).live('pagecreate',function(event, ui){
        $('#'+pn+'-submit').click( function() {
            $.mobile.changePage({
                    url: 'page.php?parm=value', 
                    type: 'post', 
                    data: $('form#'+pn+'_form')
                },'slide',false,false);

            loadAjaxPages(pn);
        });
});

function loadAjaxPages(page) {
    // this returns the page I want, all is working
    $.ajax({
        url: 'page.php?parm=value',
        type: 'POST',
        error : function (){ document.title='error'; }, 
        success: function (data) {                  
            $('#display_'+page+'_page').html(data); // removed .page(), causing page to transition, but if I use .page() I can see the desired listview
        }
    });
}

在ajax调用返回中,如果我添加了.page()(过去曾用过,但我将其放在页面函数的外面,更改了如何加载页面的逻辑以节省加载时间),则将页面转换为下一页,但我可以看到listview的样式符合我想要的方式:

$('#display_'+page+'_page').html(data).page();

删除.page()可以解决过渡错误,但是现在页面无法设置样式。我尝试过listview('refresh'),甚至listview('refresh',true)没有运气。

关于如何使列表视图刷新的任何想法?

解:

$.ajax({
    url: 'page.php?parm=value',
    type: 'POST',
    error : function (){ document.title='error'; }, 
    success: function (data) {                  
        $('#display_'+page+'_page').html(data);
        $("div#name ul").listview(); // add div wrapper w/ name attr to use the refresh
    }
});

阅读 231

收藏
2020-07-26

共1个答案

小编典典

  1. 确保调用.listviewul元素
  2. 如果以前没有设置样式,则只需调用.listview()bot刷新功能即可。如果您的Firebug设置正确,则应该已经看到一条错误消息告诉您。

在发布您的修复程序之前,我没有时间去编写一些代码,但这是我的一些建议:

if(data !== null){ $('#display_'+page+'_page').html(data).find("ul").listview() }

这比新的全局选择器更好。另外-如果您有多个UL,则不需要div,并且可以提供详细的选择器。

注意: 以上代码要求data !== null。如果为空-将引发错误。

2020-07-26