jQuery Mobile 导航栏中每行超过 5 个项目

2024-02-05

我未能成功地寻找一个变量来更改导航栏中单行中的最大项目数。

我刚刚开始使用 jQuery Mobile,尝试创建一个包含大约 7 个单字母项目的导航栏。当存在超过 5 个项目时,导航栏会自动换行,这对于我的项目来说是不可取的。

谁能指出我的代码或 CSS 中规范此行为的一段内容?


你是对的,jQM 将列限制为 5。查看代码,这似乎是函数:

/*
* jQuery Mobile Framework : plugin for creating CSS grids
* Copyright (c) jQuery Project
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*/ 
(function($, undefined ) {
$.fn.grid = function(options){
    return this.each(function(){
        var o = $.extend({
            grid: null
        },options);


        var $kids = $(this).children(),
            gridCols = {solo:1, a:2, b:3, c:4, d:5},
            grid = o.grid,
            iterator;

            if( !grid ){
                if( $kids.length <= 5 ){
                    for(var letter in gridCols){
                        if(gridCols[letter] == $kids.length){ grid = letter; }
                    }
                }
                else{
                    grid = 'a';
                }
            }
            iterator = gridCols[grid];

        $(this).addClass('ui-grid-' + grid);

        $kids.filter(':nth-child(' + iterator + 'n+1)').addClass('ui-block-a');
        if(iterator > 1){   
            $kids.filter(':nth-child(' + iterator + 'n+2)').addClass('ui-block-b');
        }   
        if(iterator > 2){   
            $kids.filter(':nth-child(3n+3)').addClass('ui-block-c');
        }   
        if(iterator > 3){   
            $kids.filter(':nth-child(4n+4)').addClass('ui-block-d');
        }   
        if(iterator > 4){   
            $kids.filter(':nth-child(5n+5)').addClass('ui-block-e');
        }

    }); 
};

这将需要一些工作,但您可以将其扩展到所需的 7 列布局。 您还需要添加自定义 CSS 来处理新列,因此您的新函数将如下所示

/*
* jQuery Mobile Framework : plugin for creating CSS grids
* Copyright (c) jQuery Project
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*/ 
(function($, undefined ) {
$.fn.grid = function(options){
    return this.each(function(){
        var o = $.extend({
            grid: null
        },options);


        var $kids = $(this).children(),
            gridCols = {solo:1, a:2, b:3, c:4, d:5, e:6, f:7},
            grid = o.grid,
            iterator;

            if( !grid ){
                if( $kids.length <= 7 ){
                    for(var letter in gridCols){
                        if(gridCols[letter] == $kids.length){ grid = letter; }
                    }
                }
                else{
                    grid = 'a';
                }
            }
            iterator = gridCols[grid];

        $(this).addClass('ui-grid-' + grid);

        $kids.filter(':nth-child(' + iterator + 'n+1)').addClass('ui-block-a');
        if(iterator > 1){   
            $kids.filter(':nth-child(' + iterator + 'n+2)').addClass('ui-block-b');
        }   
        if(iterator > 2){   
            $kids.filter(':nth-child(3n+3)').addClass('ui-block-c');
        }   
        if(iterator > 3){   
            $kids.filter(':nth-child(4n+4)').addClass('ui-block-d');
        }   
        if(iterator > 4){   
            $kids.filter(':nth-child(5n+5)').addClass('ui-block-e');
        }
            if(iterator > 5){   
            $kids.filter(':nth-child(6n+6)').addClass('ui-block-f');
        }
            if(iterator > 6){   
            $kids.filter(':nth-child(7n+7)').addClass('ui-block-g');
        }

        }); 
    };
}); // end

在 CSS 中:

改变这个:

.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height:1px;}

to this:

.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e, .ui-block-f, .ui-block-g { margin: 0; padding: 0; border: 0; float: left; min-height:1px;}

并添加这些:

/* grid e: 16/16/16/16/16/16 */
.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e .ui-block-f { width: 16%; }
.ui-grid-d .ui-block-a { clear: left; }

/* grid f: 14/14/14/14/14/14/14 */
.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e .ui-block-f .ui-block-g { width: 14%; }
.ui-grid-d .ui-block-a { clear: left; }

可能还会有其他变化,但这些是目前最突出的变化。

  • 链接到JS http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.js
  • 链接到 CSS http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.css

尝试使用导航栏按钮失败,但它们也彼此堆叠:实时链接 http://jsfiddle.net/Bzhw8/10/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery Mobile 导航栏中每行超过 5 个项目 的相关文章

随机推荐

  • 单元测试实体框架

    我刚刚开始使用 Entity Framework v4 和 Linq 我有一个实体数据模型 它是从数据库生成的 然后 我实现了存储库类 以便实现我的实体的业务逻辑 它们包含用于与实体 数据库交互的 LINQ 查询 在不访问数据库的情况下对我
  • delphi 对象赋值与:=

    有人可以解释一下以下之间的区别 1 newObj TMyObject Create newObj Assign oldObj and 2 newObj oldObj 2 确实newObj and oldObj引用同一个对象 抱歉 如果之前已
  • acts_as_taggable_on 标签添加两次

    我有一个 RoR 应用程序 允许用户标记其集合中的项目 我使用 tag it js Jquery 插件并使用 Ajax 调用在 ItemsController 中添加和删除标签 我的问题是每个标签添加两次 因此当我执行 item tags
  • CSS中不同高度的块的垂直对齐[重复]

    这个问题在这里已经有答案了 我试图达到类似的效果this https blaskdemo wordpress com 也就是说 我有一些块 这里 articles 具有相同的宽度但可以具有不同的高度 并且我希望它们位于其上邻居的旁边 当内联
  • 如何在 WCF 数据服务中获得内部联接

    假设我有 2 个表 table1 和 table2 具有共享密钥 id 如果我想使用 sql 对这两个表进行内部联接 我会做类似的事情 select id x y z from table1 inner join table2 on tab
  • play 2.4 中的插件、依赖项、模块和子项目有什么区别?

    我是 playframework 的新手 刚刚学习 我对依赖项 模块 插件和子项目有点困惑 它们有何不同 这是我的理解 可能是错的 依赖项 是播放应用程序运行所需的所有库 子项目 是另一个父应用程序内的播放应用程序 不确定 插件 和 模块
  • Rescue_from 不会从视图或助手中拯救 Timeout::Error

    我的应用程序控制器中有一个 around filter 用于将所有操作封装在超时块中 以便操作在达到 30 秒 Heroku 限制之前失败 我还有一个rescue from Timeout Error 来彻底挽救这些超时 不幸的是 resc
  • 允许在 React Native 中关注 TextInput 时点击/按下项目

    我有一个TextInput其功能是对某些结果进行搜索 过滤 结果显示在ScrollView 我遇到的问题是 虽然国家focus on the TextInput 用户必须点击两次才能选择该项目 这是一个TouchableOpacity 在里
  • Laravel 中的一次性自定义 cron 计划

    我想在用户在表单中输入的自定义日期和时间运行一次 cron 做这个的最好方式是什么 我发现可以像这样在 laravel 中安排自定义 cron gt cron 按照自定义 Cron 计划运行任务 但我找不到时间格式 的含义 或者更简单 可以
  • Numpy-convertible 类可以从序列内部正确转换为 ndarray?

    The array 方法允许自定义类型自动转换为 numpy 例如 gt gt gt class Convertible def array self return np zeros 7 gt gt gt np array Converti
  • 改变spacy NER中的beam_width

    我想将 nlp entity cfg beam width 默认情况下为 1 更改为 3 我尝试了 nlp entity cfg update beam width 3 但看起来 nlp 的东西在这次更改后被破坏了 如果我执行nlp str
  • 如何为 IP 地址签署 SSL 证书? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我有一台服务器 在我家里的一台机器上仅托管我网站的节点后端 我正在使用express 我想从另一个后端调用该服务器 我们正在尝试构建一
  • Java(Android Studio)libgdx中的代码,如何计算弹丸[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Java Android Studio libgdx中的代码 当您单击 触摸屏幕时 如何计算圆形 如球 的射弹以及如何显示它 就像打篮
  • 电子邮件模板位置绝对吗?

    使用安全吗position absolute在电子邮件模板中 取决于您的用户使用的邮件客户端 例如 Outlook 处理位置 绝对好 而 Thunderbird 则不然 我会尝试将您的邮件模板设计得尽可能 正常 例如 表格有很大帮助 恶心
  • NamedScope 和垃圾收集

    这个问题首先是在 Ninject Google Group 中提出的 但我现在发现 Stackoverflow 似乎更活跃 我使用 NamedScopeExtension 将相同的 ViewModel 注入到 View 和 Presente
  • 具有多个间隔的序列

    seq只能使用单个值by范围 有没有办法矢量化by 即使用多个间隔 像这样的事情 seq 1 10 by c 1 2 会回来c 1 2 4 5 7 8 10 现在 可以使用例如来做到这一点seq 1 10 by 1 c T T F 因为这是
  • 升级到 NPM 5.4.1 后,在不删除 node_modules 的情况下无法运行“npm install”

    我已将 NPM 从 5 3 0 升级到 5 4 1 之后 该命令似乎npm 安装仅当我删除后才有效节点模块 当我尝试重新运行安装时 收到以下错误消息 之后 如果我再次删除节点模块 命令运行安装作品 once PS C source webs
  • iOS 通讯软件 SDK

    我正在寻找在我当前的 iPhone android 应用程序中实现应用程序内消息程序 要求是它必须免费 实时并提供推送通知 我已经研究过自己创建系统 但注意到很多应用程序实现了非常相似的概念 所以我认为 SDK 包装器可用 以下是使用要实现
  • 我可以在 Web 配置中设置应用程序池吗?

    我使用 IIS 7 0 我想知道如何在 Web 配置文件中设置应用程序池 我认为这是不可能的 为您的应用程序选择应用程序池是一个 设置 问题 而不是一个 配置 问题
  • jQuery Mobile 导航栏中每行超过 5 个项目

    我未能成功地寻找一个变量来更改导航栏中单行中的最大项目数 我刚刚开始使用 jQuery Mobile 尝试创建一个包含大约 7 个单字母项目的导航栏 当存在超过 5 个项目时 导航栏会自动换行 这对于我的项目来说是不可取的 谁能指出我的代码