jQuery Mobile Listview autodividers选项

jQuery Mobile是一款基于HTML5和CSS3的开源JavaScript库,专为移动端设计而生。其中Listview是一种常见的数据展示方式,而autodividers则是Listview提供的一种分组显示内容的选项。

官方文档说明:https://api.jquerymobile.com/listview/#option-autodividers

autodividers选项的作用

当我们需要展示大量数据时,Listview提供的autodividers选项可以自动为数据进行分组,以便于用户查找和浏览。我们只需要按照指定的属性值进行数据排序分组,Listview就可以自动创建分组标题和分隔线。

如何使用autodividers选项

(1)在Listview的HTML结构里,添加data-autodividers="true"属性。

<ul data-role="listview" data-inset="true" data-filter="true" data-autodividers="true">
    <li data-animal="hamster">Hamster</li>
    <li data-animal="lion">Lion</li>
    <li data-animal="seal">Seal</li>
    <li data-animal="monkey">Monkey</li>
    <li data-animal="cat">Cat</li>
    <li data-animal="dog">Dog</li>
    <li data-animal="cow">Cow</li>
</ul>

(2)在数据源中添加用于排序的属性值,用于生成分组标题。

<ul data-role="listview" data-inset="true" data-filter="true" data-autodividers="true">
    <li data-animal="hamster">Hamster</li>
    <li data-animal="lion">Lion</li>
    <li data-animal="seal">Seal</li>
    <li data-animal="monkey">Monkey</li>
    <li data-animal="cat">Cat</li>
    <li data-animal="dog">Dog</li>
    <li data-animal="cow">Cow</li>
</ul>

<script>
    // 设置数据源及排序方式
    var animals = [
        { name: "Hamster", category: 'small pets'},
        { name: "Lion", category: 'wild animals'},
        { name: "Seal", category: 'sea animals'},
        { name: "Monkey", category: 'wild animals'},
        { name: "Cat", category: 'house pets'},
        { name: "Dog", category: 'house pets'},
        { name: "Cow", category: 'farm animals'},
    ];
    animals.sort(function(a,b){
        return a.category > b.category ? 1 : -1;
    });
    // 为每个li添加data-category属性
    $('ul[data-role="listview"] li').each(function(i){
        $(this).attr('data-category', animals[i].category);
    });
</script>

示例1:按字母分组列表

<ul data-role="listview" data-inset="true" data-filter="true" data-autodividers="true">
    <li data-name="Abbey">Abbey</li>
    <li data-name="Alice">Alice</li>
    <li data-name="Amy">Amy</li>
    <li data-name="Barbara">Barbara</li>
    <li data-name="Bob">Bob</li>
    <li data-name="Bruce">Bruce</li>
    <li data-name="Charles">Charles</li>
    <li data-name="Cindi">Cindi</li>
    <li data-name="David">David</li>
    <li data-name="Dean">Dean</li>
    <li data-name="Diana">Diana</li>
    <li data-name="Doug">Doug</li>
    <li data-name="Dylan">Dylan</li>
    <li data-name="Ella">Ella</li>
    <li data-name="Elliot">Elliot</li>
    <li data-name="Emily">Emily</li>
    <li data-name="Emma">Emma</li>
</ul>

<script>
    $('ul[data-role="listview"] li').each(function(){
        $(this).attr('data-letter', $(this).text().substring(0,1));
    });
</script>

示例2:按照首字母ASCII值分组

<ul data-role="listview" data-inset="true" data-filter="true" data-autodividers="true">
    <li data-name="Amsterdam">Amsterdam</li>
    <li data-name="Blowfish">Blowfish</li>
    <li data-name="Coconut">Coconut</li>
    <li data-name="Daikon">Daikon</li>
    <li data-name="Eggplant">Eggplant</li>
    <li data-name="Flounder">Flounder</li>
    <li data-name="Garbanzo">Garbanzo</li>
    <li data-name="Horchata">Horchata</li>
    <li data-name="Ice cream">Ice cream</li>
    <li data-name="Jicama">Jicama</li>
    <li data-name="Kale">Kale</li>
    <li data-name="Lemongrass">Lemongrass</li>
    <li data-name="Mango">Mango</li>
    <li data-name="Nectarine">Nectarine</li>
    <li data-name="Olive">Olive</li>
    <li data-name="Potato">Potato</li>
    <li data-name="Quince">Quince</li>
    <li data-name="Rabbit">Rabbit</li>
    <li data-name="Squash">Squash</li>
    <li data-name="Tomato">Tomato</li>
    <li data-name="Udon">Udon</li>
    <li data-name="Vegetables">Vegetables</li>
    <li data-name="Watermelon">Watermelon</li>
    <li data-name="Xigua">Xigua</li>
    <li data-name="Yams">Yams</li>
    <li data-name="Zucchini">Zucchini</li>
</ul>

<script>
    $('ul[data-role="listview"] li').each(function(){
        $(this).attr('data-charcode', $(this).text().charCodeAt(0));
    });

    $('ul[data-role="listview"]').on('listviewbeforeautodividers', function (event, data) {
        var key = String.fromCharCode(data.text.charAt(0).charCodeAt(0)).toUpperCase();
        if ($.inArray(key, data.autodividers) < 0) {
            data.autodividers.push(key);
            data.dividers.append('<li data-role="list-divider">' + key + '</li>');
        }
    });
</script>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery Mobile Listview autodividers选项 - Python技术站

(0)
上一篇 2023年5月12日
下一篇 2023年5月12日

相关文章

  • jQWidgets jqxDockPanel disabled属性

    以下是关于“jQWidgets jqxDockPanel disabled属性”的完整攻略,包含两个示例说明: 简介 jqxDPanel 控件的 disabled 属性用于禁用或启控件。 disabled 属性被设置为 true 时,jqxDock件将被禁用,用户无法与其交互。当 disabled 属性被设置为false时,jqxDockPanel` 控件将…

    jquery 2023年5月10日
    00
  • jquery中的ajax如何返回结果而非回调方式即为同顺序执行

    在jQuery中,AJAX默认情况下是通过回调函数的方式返回结果的,因此在执行AJAX请求之后可能会出现一些异步执行的问题,导致代码难以维护和调试。而同步执行可以避免这种情况的出现。 为了实现同步执行,需要使用jQuery中的ajax()方法的async属性。async默认值为true,即异步执行,而将其设置为false则可实现同步执行。 下面是一个示例,通…

    jquery 2023年5月18日
    00
  • jquery text(),val(),html()方法区别总结

    当我们使用jQuery来操作DOM元素时,常常会遇到一种情况,即需要获取或修改该元素的文本内容或属性值。此时,jQuery提供了text()、val()、html()方法来实现这些操作。下面是他们的详细讲解,以及区别总结。 1. text()方法 text()方法返回(或修改)匹配元素的纯文本内容。比如,下面这个例子中,我们通过选择器选中了一个段落元素 ,然…

    jquery 2023年5月28日
    00
  • jQuery实现自动与手动切换的滚动新闻特效代码分享

    下面我来详细讲解“jQuery实现自动与手动切换的滚动新闻特效代码分享”的完整攻略。这个特效可以让你的网站拥有带有无限滚动、自动播放、手动切换等功能的新闻动态栏。步骤如下: 制作HTML结构 首先,我们需要在HTML页面中添加一个容器的div,然后在其中添加新闻动态内容和按钮区域: <div class="news-container&quo…

    jquery 2023年5月28日
    00
  • 如何使用jquery easyui创建标签组件

    当我们需要在网页中添加标签页时,jQuery EasyUI 提供了一种简便有效的方式来创建标签组件。 以下是使用jQuery EasyUI创建标签组件的步骤: 步骤一:导入jQuery库和EasyUI相关文件 <head> <title>示例页面</title> <meta charset="utf-8&q…

    jquery 2023年5月18日
    00
  • DataTables滚动折叠选项

    以下是关于DataTables滚动折叠选项的完整攻略: 滚动折叠选项是什么? 滚动折叠选项是DataTables中的一个选项,用于设置表格是否允许滚动折叠。使用滚动折叠选项,可以设置表格是否允许滚动折叠。 如何使用滚动折叠选项? 可以使用以下代码设置滚动折叠选项: $(‘#example’).DataTable( { "scrollCollapse…

    jquery 2023年5月12日
    00
  • 从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例

    下面我将详细讲解“从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例”的完整攻略。 一、Node.js基础知识 Node.js是什么:Node.js是一个基于Chrome V8引擎的JavaScript运行环境。Node.js使用事件驱动、非阻塞I/O模型,使其轻量又高效。 NPM是什么:Node.js的包管理…

    jquery 2023年5月27日
    00
  • 基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能

    请看下面的攻略: 前言 本攻略将详细讲解如何使用 PHP 框架 ThinkPHP 和 jQuery 实现 Ajax 的多选反选不选删除数据功能。 准备工作 在开始之前,需要确保你已经完成以下准备工作: 已经安装了 PHP 和 MySQL,且掌握了基本的 PHP 和 MySQL 知识; 已经安装了 Apache 或者 Nginx 服务器,并成功配置了虚拟主机;…

    jquery 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部