jQuery Mobile是一个用于开发移动Web应用的JavaScript库,它提供了最常用的组件和接口,使得开发者可以很容易地创建完整的移动Web应用。其中Filterable enhanced是其提供的一个组件,主要用于过滤HTML列表。接下来我将详细讲解如何使用jQuery Mobile Filterable enhanced选项。
1. 概述
Filterable enhanced是jQuery Mobile提供的一个Listview的扩展组件,可以实现在Listview列表中动态搜索和过滤内容,减少用户对大量数据项进行手动滑动查找的操作。使用时需要引入jQuery Mobile,并在HTML标签上添加一些数据属性。
2. 使用步骤
2.1 引入jQuery Mobile
首先需要在文档的头部引入jQuery和jQuery Mobile的JS和CSS文件。
<!-- 引入jQuery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<!-- 引入jQuery Mobile CSS -->
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css"/>
<!-- 引入jQuery Mobile JS -->
<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
2.2 使用Listview
Filterable enhanced是Listview的扩展功能,所以我们需要先创建Listview,并在Listview列表中添加数据。
<div data-role="page">
<div data-role="header">
<h1>Listview with Filterable enhanced</h1>
</div>
<div data-role="content">
<ul data-role="listview" data-filter="true" data-filter-placeholder="Search...">
<li><a href="#">Apple</a></li>
<li><a href="#">Banana</a></li>
<li><a href="#">Cherry</a></li>
<li><a href="#">Grape</a></li>
<li><a href="#">Kiwi</a></li>
<li><a href="#">Lemon</a></li>
<li><a href="#">Mango</a></li>
<li><a href="#">Orange</a></li>
<li><a href="#">Pineapple</a></li>
</ul>
</div>
<div data-role="footer">
<h4>Footer</h4>
</div>
</div>
2.3 设定Filterable enhanced选项
在Listview的#id或元素标签上添加data-filter=”true”和data-filter-placeholder=”Search…”属性即可开启Filterable enhanced功能,其中data-filter-placeholder属性用于设置搜索框的placeholder。
<ul data-role="listview" data-filter="true" data-filter-placeholder="Search...">
2.4 自定义搜索匹配过滤
Filterable enhanced支持自定义过滤规则,需在ul元素上添加data-filter-text-only=”true”参数,这时搜索规则被限制为只匹配项的文本(会忽略其它所有html信息,例如:图片,链接和HTML标记等等)。
<ul data-role="listview" data-filter="true" data-filter-placeholder="Search..." data-filter-text-only="true">
2.5 根据输入框内容实时监听过滤
通过设置data-input="#id"
,可以实现输入框内容变化时实时监听过滤。
<ul data-role="listview" data-filter="true" data-filter-reveal="true" data-filter-placeholder="Search..." data-input="#filter-input">
在HTML中还需要添加如下的输入框:
<input id="filter-input" data-type="search" placeholder="Search...">
3. 示例说明
3.1 静态搜索
下面的示例中,搜索框的placeholder文本为“Search fruits…”,输入内容后即可实现Listview的静态搜索筛选功能。
<div data-role="page">
<div data-role="header">
<h1>Listview with Filterable enhanced</h1>
</div>
<div data-role="content">
<div data-role="fieldcontain">
<form>
<label for="filter-input">Search fruits:</label>
<input type="search" name="filter" id="filter-input" value="" data-mini="true" />
</form>
</div>
<ul data-role="listview" data-filter="true" data-filter-placeholder="Search fruits...">
<li><a href="#">Apple</a></li>
<li><a href="#">Banana</a></li>
<li><a href="#">Cherry</a></li>
<li><a href="#">Grape</a></li>
<li><a href="#">Kiwi</a></li>
<li><a href="#">Lemon</a></li>
<li><a href="#">Mango</a></li>
<li><a href="#">Orange</a></li>
<li><a href="#">Pineapple</a></li>
</ul>
</div>
<div data-role="footer">
<h4>Footer</h4>
</div>
</div>
3.2 按钮过滤
下面的示例中,我们添加了一个按钮,当用户点击按钮时触发过滤,筛选出Class为“red”的Listitem。
<div data-role="page">
<div data-role="header">
<h1>Listview with Filterable enhanced</h1>
</div>
<div data-role="content">
<ul data-role="listview" data-filter="true" data-filter-placeholder="Search fruits..." data-filter-reveal="true">
<li class="red"><a href="#">Apple</a></li>
<li><a href="#">Banana</a></li>
<li class="red"><a href="#">Cherry</a></li>
<li><a href="#">Grape</a></li>
<li><a href="#">Kiwi</a></li>
<li><a href="#">Lemon</a></li>
<li><a href="#">Mango</a></li>
<li><a href="#">Orange</a></li>
<li class="red"><a href="#">Pineapple</a></li>
</ul>
<a href="#" data-role="button" id="filter-button">Filter Red Fruits</a>
</div>
<div data-role="footer">
<h4>Footer</h4>
</div>
</div>
<script>
$(document).on("click","#filter-button", function(){
$("li").hide();
$("li.red").show();
});
</script>
4. 总结
通过上述步骤,就可以实现在jQuery Mobile中使用Filterable enhanced组件,完成对Listview列表的搜索和过滤。通过自定义搜索匹配规则、开启键盘监听、过滤一部分的Listitem等方法,可以满足不同场景的业务需求。