2014-01-08 56 views
1

我有一个使用jqueryMobile使用数据过滤器显示功能创建的列表视图。此功能隐藏列表元素,并显示与您输入的字符匹配的输入字符。我的数据源是本地的(意味着列表是静态填充的)。jQueryMobile listview与过滤器显示,点击显示项目

我想要做的是显示所有项目,而不需要输入任何字符,但当列表本身获得焦点(并在它丢失时将其隐藏)。

我知道我可以只是jQuery的所有元素,并做演示/隐藏自己,但我想知道是否有一个现成的解决方案,我不知道。

+0

您正在使用哪个版本? – Omar

+0

我正在使用jquery mobile 1.3.2和jquery 1.9.1 –

回答

1

不存在开箱即用的解决方案,但是,您可以执行以下操作。

input集中,设置.listview("option", "filterReveal", true);和手动隐藏所有列表视图项加入ui-screen-hidden JQM类。当模糊时,扭转上一个操作。

注意filterReveal在JQM 1.4.0已被弃用,将在1.5.0被删除。

var list = $("#list"); 

$("input").on("focus", function() { 
    $(this).val(""); 
    list.listview("option", "filterReveal", false); 
    list.children().removeClass("ui-screen-hidden"); 
    list.listview("refresh"); 
}).on("keydown", function() { 
    list.listview("option", "filterReveal", true); 
    list.children().addClass("ui-screen-hidden"); 
    list.listview("refresh"); 
}); 

Demo

+0

这不完全是我问的,我想要的是输入来隐藏列表,但它会立即显示它获取焦点,而不是只在打字时第一个字符。但我想我可以从你的例子中解脱出来。谢谢。 –

+1

@ kelmer隐藏了曾经关注的元素。最初,你想要隐藏和重点列表项目,显示它们?编辑:http://jsfiddle.net/Palestinian/5zcB8/ – Omar

+1

这真棒,谢谢! –