0

'你好 StackOverflowers。

所以这是我的场景:我填充了一个ListViewusing localStorage. 一切都在填充该列表视图并“刷新”它。但!

现在我想添加一个搜索栏,如果超过 5 个元素添加到ListView. 这是我当前的代码(不起作用):

if (resultLength > 5)
{
    // alert('5 or more elemnts found.');
    $("#ConnectionList").attr("data-filter", true);
    $("#ConnectionList").attr("data-filter-placeholder", "Search...");
}

当我取消注释时alert,它会正确触发。在两条线后面添加.listview('refresh')似乎也不起作用。

我究竟做错了什么?

先感谢您。

4

1 回答 1

1

不幸的是,这行不通。jQuery Mobile将无法将过滤器动态添加到现有列表视图。

但是有一个解决方法。在填充列表视图之前,您尝试填充的元素数量,如果数字为 5 或更多,请删除当前列表视图并在同一位置添加新的列表视图。这是另一件奇怪的事情,如果您从头开始创建列表视图(考虑过滤器),过滤器将成功生成。

我为你做了一个例子:http: //jsfiddle.net/Gajotres/SS7vJ/

$(document).on('pagebeforeshow', '#index', function(){       
    $('<ul>').attr({'id':'test-listview','data-role':'listview', 'data-filter':'true','data-filter-placeholder':'Search...'}).appendTo('#index [data-role="content"]');
    $('<li>').append('<a href="#">Audi</a>').appendTo('#test-listview');
    $('<li>').append('<a href="#">Mercedes</a>').appendTo('#test-listview');
    $('<li>').append('<a href="#">Opel</a>').appendTo('#test-listview');
    $('#test-listview').listview().listview('refresh');
});

也不要忘记调用 .listview( 两次,第一次没有刷新参数,第二次使用刷新参数。没有它你会收到这个错误:

cannot call methods on listview prior to initialization

你可以在这篇文章中找到更多关于这个问题的信息,为了透明,这是我的个人博客。或者在这里找到它。查找名为:标记增强问题的章节。

于 2013-03-01T17:58:36.300 回答