2011-08-24 45 views
1

所以我有一个列表,在下列方式格式化:过滤与jQuery Mobile的格式化列表

<.ul data-role="listview" data-filter="true"> 
<.li> 
<.h2>header<./h2> 
<.p>description<./p> 
<./li> 
<./ul> 

我怎么能只有头部分筛选呢?我会很感激的快速回答:)

+0

你是什么意思头部分过滤器?你想获得所有标题列表? – Henry

+0

不,我希望显示所有内容,但是应该考虑仅过滤标题部分。如果我们有2条记录: Arti 双色 饼干怪物 反社会反社会。 当我在搜索栏中输入'a'时,虽然我只需要第一个记录,但因为第二个(其他)在头部不包含'a',所以我得到了两个记录。 – Rufix

回答

2

jQuery手机支持过滤列表圣诞节,这应该是你想要达到的罚款。

http://jquerymobile.com/test/docs/lists/docs-lists.html#/test/docs/lists/lists-search.html

编辑:

这表明如何隐藏,并且基于< H2从一个搜索框内容>表演元素。您可能需要为您的项目调整它,但它应该让您开始。

http://jsfiddle.net/A3qFK/3/

<script> 
// This makes the contains selector case insensitive 
// Use :containsCaseInsensitive in place of :contains() 
jQuery.expr[':'].containsCaseInsensitive = function(a, i, m) { 
    return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; 
}; 


// When a key is pressed, hide and show relevant list items 
$("#Search").live('keyup', function(e) { 
    var SearchTerm = $(this).val(); 

    // Find items to hide 
    var ItemsToHide = $("li", "#ItemList").not(":containsCaseInsensitive("+ SearchTerm +")"); 
    $(ItemsToHide).hide(); 

    // Find items to show 
    var ItemsToShow = $("h2:containsCaseInsensitive(" + SearchTerm + ")", "#ItemList").parent(); 
    $(ItemsToShow).show(); 

}); 
</script> 


<input type="text" id="Search"> 

<ul id="ItemList" data-role="listview" data-filter="true"> 
    <li> 
     <h2>Item 1</h2> 
     <p>Winner</p> 
    </li> 
    <li> 
     <h2>Item 2</h2> 
     <p>description</p> 
    </li> 
    <li> 
    <h2>Lorem</h2> 
     <p>Some more content</p> 
     </li> 
    <li> 
     <h2>Ipsum</h2> 
     <p>Content</p> 
    </li> 
</ul> 
+0

不是这样,当每个列表元素由2个asp标签组成(忘记提及它使用ASP.NET完成)时,通过这种方式筛选两个标签,但我只希望它检查第一个标签。 – Rufix

+0

好的,给我一分钟的病nock的东西做手动 – Henry

+0

我编辑了我的答案与JSFiddle的例子和脚本。 – Henry