2012-02-08 41 views
1

我从本地存储拉取JSON数据,并使用grep根据选定的ID过滤掉所需的项目。然后我将过滤后的集合转换成“LI”项目,然后将它们附加到UL容器中。 UL容器的data-inset属性设置为yes。当我申请列表视图(“刷新”)的“UL”插图的外观和感觉不适用(在第一项和最后一项圆角jQuery Mobile listview刷新不适用插入外观

这里是我的代码:

var categoryId = 1;     
    var data = JSON.parse(... data from localstorage...); 

    //FILTER OUT DATA FOR THE SELECTED CATEGORY 
    data = $.grep(data, function(el, i) 
    { 
     if (el.CategoryId == categoryId) 
      return el; 
    }); 

    //BUILD LI ELEMENTS FROM FILTERED LIST 
    var categoryListItems = []; 
    $.each(data, function(i, item) 
    { 
     categoryListItems.push('<li data-category-id="' + item.CategoryId + '" data-id="' + item.ListId + '">' + item.ListName + '</li>'); 
    }); 

    $('ul#CategoryList li').remove(); 
    $('ul#CategoryList').append(categoryListItems.join('')).listview("refresh"); 

纵观产生HTML中,CSS类“ui-corner-top”和“ui-corner-bottom”在刷新后没有得到应用。这些是围绕inset外观的第一个和最后一个li元素的拐角处的类。

关于为什么这些类没有得到应用的任何想法?

回答

4

尝试使用这个

$('ul#CategoryList').append(categoryListItems.join('')).listview("refresh", true); 
+1

附加的真实参数保持舍入效果。 – Chris 2012-04-04 08:20:52

0

添加该代码列表视图之后刷新

$("#pageid").trigger("create");//pageid is the id of the page which has the listview.

这将迫使所有的jQuery Mobile的样式重新应用越来越重建页面。

+0

感谢您的建议,但没有有所作为。我把$(“#pageid”)。trigger(“create”);在listview刷新调用之后。 – 2012-02-08 14:29:23

+0

你必须用代码片段中的pageid替换你用于页面的任何id(data-role ='page')。例如:如果id是categorypage,你应该使用$(“#categorypage”)。 (“创建”); – user700284 2012-02-08 15:08:52