1

我在刷新 jquery 移动列表视图时遇到问题。

此代码工作正常:

$(document).bind( "pagebeforechange", function( e, data ) {

   // Generating a dynamic list
       for(var i=0;i<list.length;i++){
           var link = '<li><a href="#">'+list[i].name+'</a></li>';
           $("#listview").append(link);
       }

   // Listview refresh
   $("#myPage").on('pagebeforeshow', function() {
       try {
           $("#listview").listview('refresh');
       } catch (e) {
           $("#listview").listview();
       }
   });

   $.mobile.changePage($(#myPage), {
        transition:"slide",
        dataUrl:url,
        allowSamePageTransition:true,
        reverse:reverse
    });
    e.preventDefault();

});

但是,我需要动态添加一个图标来列出用户收藏夹中的视图项目。我使用一个函数,它通过对本地数据库的请求返回一个数组。

$(document).bind( "pagebeforechange", function( e, data ) {

  getFavs(function(favsArray){       

     // Generating dynamic list with image
       for(var i=0;i<list.length;i++){
           favImg = "";
           if(favsArray.indexOf(list[i].id) !== -1){
               favImg = '<img src="images/star-36-black.png" class="ui-li-icon" />';
           }               
           var link = '<li><a href="#">'+favImg+list[i].name+'</a></li>';
           $("#listview").append(link);
       }

       // Listview refresh
       $("#myPage").on('pagebeforeshow', function() {
          try {
              $("#listview").listview('refresh');
          } catch (e) {
              $("#listview").listview();
          }
       });

  });

   $.mobile.changePage($(#myPage), {
        transition:"slide",
        dataUrl:url,
        allowSamePageTransition:true,
        reverse:reverse
    });
    e.preventDefault();

});

在第二种情况下,Listview()不适用。我不明白为什么第二个选项如此不同以至于它破坏了Listview()......

4

1 回答 1

0

我在这里找到了类似的帖子,尽管解决方案有所不同。在第二个选项中,我只需要删除绑定到pagebeforshow

   // Listview refresh
      try {
          $("#listview").listview('refresh');
      } catch (e) {
          $("#listview").listview();
      }

但是,我还不明白为什么pagebeforeshow在第一个选项中需要绑定到,而它破坏了第二个选项中的代码......

于 2013-03-17T08:53:23.593 回答