【问题标题】:Filtering formated list with jQuery Mobile使用 jQuery Mobile 过滤格式化列表
【发布时间】:2011-11-02 17:03:50
【问题描述】:

所以我有一个列表,格式如下:

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

如何仅按标题部分过滤它?我将不胜感激快速回答:)

【问题讨论】:

  • 按标题部分过滤是什么意思?您想获取所有标题的列表吗?
  • 不,我希望显示所有内容,但在过滤时只应考虑标题部分。如果我们有 2 条记录: Arti bleble Cookie Monster 一种反社会反社会性。当我在搜索栏中输入“a”时,我得到了两条记录,虽然我只想要第一个,因为第二个(其他)在标题中不包含“a”。

标签: jquery list mobile filter formatted


【解决方案1】:

jQuery mobile 支持过滤列表 Nativity,这对于您想要实现的目标应该没问题。

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

编辑:

这演示了如何在搜索框中根据

的内容隐藏和显示元素。您可能需要根据您的项目对其进行调整,但它应该可以帮助您入门。

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>

【讨论】:

  • 不是真的,这样当每个列表元素包含 2 个 asp 标签时(忘了说它是用 ASP.NET 完成的)过滤检查两个标签,但我只希望它检查第一个。跨度>
猜你喜欢
  • 1970-01-01
  • 2014-09-02
  • 2012-02-24
  • 2018-08-20
  • 2011-03-28
  • 2016-05-26
  • 2011-12-31
  • 1970-01-01
相关资源
最近更新 更多