加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在ajax调用完成功能后刷新jquery移动列表视图不起作用

发布时间:2020-12-16 02:53:59 所属栏目:百科 来源:网络整理
导读:我正在使用jQuery 1.3.1和phonegap 2.9.0开发一个应用程序. 使用php从服务器动态加载的所有数据ara.我的问题是每次listview项目更改时刷新调用都不起作用.我已经尝试和搜索了很多但还没有成功. 我认为,在listview完成之前调用刷新函数,但是在我尝试将这行代
我正在使用jQuery 1.3.1和phonegap 2.9.0开发一个应用程序.

使用php从服务器动态加载的所有数据ara.我的问题是每次listview项目更改时刷新调用都不起作用.我已经尝试和搜索了很多但还没有成功.
我认为,在listview完成之前调用刷新函数,但是在我尝试将这行代码放在任何地方都不起作用.

有帮助吗?

这是我的列表视图

<ul data-role="listview" data-autodividers="true" id="listview1" data-divider-theme="b" data-split-theme="b" data-filter-theme="b" data-split-icon="phone" data-filter="true" data-filter-placeholder="Search..." ></ul>

这是我如何使ajax调用服务器

$.ajax({url: JsonURL
           beforeSend: function(){ $.mobile.showPageLoadingMsg('b','Updating content...',true); },complete: function () { 
                                  console.log("refreshing..");
                                  $('#listview1').listview('refresh');
                                  $('#listview2').listview('refresh');
                                  $('#listview3').listview('refresh');
                                  $.mobile.hidePageLoadingMsg(); },contentType: "application/json; charset=utf-8",dataType: "json",async: true,success: function (result) {
                     data = result;
                     app.setupdevice();
                     $.mobile.changePage('#home',{transition: 'slide'});
                   },error: function (request,error) {
                            console.log(error.message);
                        }
            });

在这里我如何创建列表视图.每次列表项更改为使用新项更新列表时,此代码都会运行.

在成功函数中,我调用setupdevice,初始化listviews,如下所示.然后在完整的功能我刷新listview.由于某种原因,它只是第一次刷新.

items='';    
$.each(data.pois,function() {
             items += '<li><a href="#"><h3>'+this.name+'</h3></a><a href="tel:''+this.tel+''" >call</a></li>';
            });

            $('#listview1').html(items);

这是我第一次遇到这个问题,我真的很生气,因为我无法找到为什么会这样.

解决方法

列表视图刷新应该在填充ul元素后执行,所以这样做:

items='';    
$.each(data.pois,function() {
    items += '<li><a href="#"><h3>'+this.name+'</h3></a><a href="tel:''+this.tel+''" >call</a></li>';
});

$('#listview1').html(items);
$('#listview1').listview('refresh');

这样,您可以确保仅在追加内容后才会刷新列表视图.

编辑:

评论中提到的问题可以像这样解决:

items='';    
$.each(data.pois,function() {
    items += '<li><a href="#"><h3>'+this.name+'</h3></a><a href="tel:''+this.tel+''" >call</a></li>';
});

$('#listview1').html(items);
$('#listview1').listview().listview('refresh');

第一个listview调用将初始化小部件,第二个将刷新它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读