不幸的是,这行不通。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
你可以在这篇文章中找到更多关于这个问题的信息,为了透明,这是我的个人博客。或者在这里找到它。查找名为:标记增强问题的章节。