Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当可见的原始ul中有0个项目时,为什么溢出菜单工作不好?

当可见的原始ul中有0个项目时,为什么溢出菜单工作不好?
EN

Stack Overflow用户
提问于 2012-03-10 12:46:27
回答 1查看 87关注 0票数 3

下面是问题的样子:

虽然它应该看起来像:

以下是用于创建弹出溢出菜单的函数:

代码语言:javascript
运行
AI代码解释
复制
function updateMenu(){
    var lastItemIndex = Number.POSITIVE_INFINITY;
    var lastItemText = "";
    var maxWidth = 0;
    var overflowCount=0;
    var navHeight = $('.nav').height();
    $('.nav li').each(function(i,e){
    console.log($(e).position().top);
        if($(e).position().top>=navHeight){
            if(i<lastItemIndex) lastItemIndex=i-1;
            if($(e).width()>maxWidth) maxWidth = $(e).width();
            overflowCount++;
        }
    });
    maxWidth = Math.max(maxWidth,$('.nav li:eq('+(lastItemIndex)+')').width());
    var moreHeight = (overflowCount+2)*navHeight;
    $('#moreMenu').remove();
    if(overflowCount>0){
        $('<ul id="moreMenu"/>').appendTo('body').width(maxWidth+16).height(navHeight);
        $('#moreMenu').offset($('.nav li:eq('+(lastItemIndex)+')').offset());
        $('#moreMenu').append('<li>More...</li>');
        $('.nav li:gt('+(lastItemIndex-1)+')').each(function(i,e){
            $('#moreMenu').append('<li>'+$(e).html()+'</li>');
        });
        $('#moreMenu').hover(
            function(){$(this).height(moreHeight);},
            function(){$(this).height(navHeight);});
    }
}

这是这个bug的life jsfiddle demo (我使用chrome进行测试)。

我想知道我的updateMenu函数有什么问题,为什么当所有菜单项都显示在弹出菜单中时,实际上没有显示(并且没有推送到弹出菜单对象中)?

更新fire fox也没有为我显示任何项目:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-10 13:03:12

一个问题是你用"lastItemIndex“组成的选择器,当它是零时,是无效的:

代码语言:javascript
运行
AI代码解释
复制
$('.nav li:gt(' + (lastItemIndex - 1) + ')') ...

当它为零时,它看起来像.nav li:gt(-1),这是无效的(或者至少它不起作用)。如果将其更改为:

代码语言:javascript
运行
AI代码解释
复制
$('.nav li:gt(' + Math.max(0, lastItemIndex - 1) + ')')

然后,<li>元素被转移到"More“框。

另外,直接在“调整大小”处理程序中进行更新可能不是最好的主意。浏览器会非常迅速地触发该事件,并且执行所有的DOM工作将导致缓慢的行为。相反,您可以做的是让"resize“处理程序启动一个计时器大约50或100毫秒,当它这样做时,取消之前的任何计时器。当用户放慢调整大小的速度时,计时器事件将被触发,您可以在其中执行DOM工作。

Here是使用选择器修复更新的jsfiddle (不更改事件处理)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9646533

复制
相关文章
python使用moviepy模块对视频进行操作
前段时间需要对多个视频进行合并,还需要对一个视频按需求进行截切成多个视频,然而网上虽然有现成的工具。
狼啸风云
2020/01/14
1.6K0
Python视频编辑库:MoviePy
MoviePy是一个关于视频编辑的python库,主要包括:剪辑,嵌入拼接,标题插入,视频合成(又名非线性编辑),视频处理,和自定制效果。可以看gallery中的一些实例来了解用法。MoviePy可以读写所有的音频和视频格式,包括GIF,通过python2.7+和python3可以跨平台运行于window/Mac/Linux,下面是一个在IPython notebook的运行实例。 demo_preview.jpeg 实例
py3study
2020/01/02
2.2K0
Python使用tkinter+moviepy+pyaudio开发视频播放器
使用tkinter制作界面,播放mp4、avi视频,需要安装扩展库moviepy和pyaudio,可以参考之前推送过的文章或查阅相关资料。
Python小屋屋主
2020/05/08
1.7K0
Python使用tkinter+moviepy+pyaudio开发视频播放器
Python视频剪辑工具moviePy
关注了很多的公众号,大佬们的骚操作层出不穷,看的我跃跃欲试。也想整一下。跟在大佬们的后面好看风景(复现操作)。
云深无际
2021/04/14
2K0
Python视频剪辑工具moviePy
使用Python+moviepy连接不同尺寸的视频文件
如果直接连接多段不同尺寸的视频文件,后面几段可能会出现花屏的现象。可以使用VideoFileClip对象的resize()方法调整至相同大小,然后再进行连接就可以了。ImageFileClip对象也具有同样的resize()方法。
Python小屋屋主
2020/02/13
3.8K0
使用Python+moviepy连接不同尺寸的视频文件
创建和发布 Python 包
如果你和我一样,希望将编写的 Python 实用程序与同事共享,最好的方法是制作一个软件包:它很容易安装,而且不需要复制粘贴。
老齐
2021/04/30
9790
创建和发布 Python 包
如何发布自己的 python 包?
本文以笔者实际发布的 python 包 imgkernel 为例。因此,在本文所有出现 imgkernel 的地方,都替换成读者自己项目或包的名称。 同时,imgkernel 也托管在 github 上,后续 master 分支会更新,但是项目单独检出的 pkg 分支将保持与本文内容一致,不再改动。因此,可以将此分支 clone 下来作为新项目启动工程。clone pkg 分支的方法如下:
我是一条小青蛇
2019/10/23
6260
如何发布自己的 python 包?
moviepy,短视频生成
moviepy是一个用于视频编辑的python模块,能够实现基本的操作,比如视频的裁剪,拼接,插入标题等等 甚至还自带了一些高级的特效,以后再说。当然,gif格式的读写也在其内。
福贵
2021/01/08
1.7K0
保姆教程:构建与发布Python包
通常,如果您正在创建 Python 包,要么是因为有一些想要与他人分享的代码,要么是因为您对想要分享的东西有一定的想法。
数据科学工厂
2023/02/27
1.4K0
保姆教程:构建与发布Python包
使用dotnet Cli向nuget发布包
长话短说, 今天分享如何在nuget.org创建并发布.NET Standard package。
有态度的马甲
2020/06/10
1.2K0
python:使用moviepy合并m3u8格式的视频
视频网站或者客户端缓存下来的文件很多时候都是m3u8格式的文件,也就是拆成了很多段的视频,一个m3u8 文件实质是一个播放列表(playlist),其可能是一个媒体播放列表(Media Playlist)或者是一个主列表(Master Playlist)。
生信菜鸟团
2022/04/08
1.9K0
python:使用moviepy合并m3u8格式的视频
python也能玩视频剪辑!moviepy操作记录总结
前几篇文章咱们介绍了一下图片的处理方式,今天咱们说说视频的处理。python能够支持视频的处理么?当然是肯定的,人生苦读,我用python。万物皆可python。
菜鸟小白的学习分享
2020/07/14
1.3K0
Python包:json扩展包demjson使用
Json在编程中是一种轻量级的文件格式,在本地开发或者web开发中使用较多。参考维基百科介绍如下:
用户3578099
2020/09/22
2.9K0
Python+moviepy进行音频剪辑、拼接和格式转换
1、使用pip命令安装Python扩展库moviepy。 2、查看音频原文件的属性,尤其是比特率,下图所示是一个用手机录制的音频文件的信息 3、编写代码,截取上面音频文件中的几段,然后拼接到一起。 4
Python小屋屋主
2021/07/19
2K0
使用typescript开发angular模块(发布npm包)
创建模块 初始化package.json文件 执行命名 npm init -y 会自动生成package.json文件如下,name默认为文件夹名称 { "name": "MZC-Ng-Api", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords"
易兒善
2018/08/21
1.3K0
使用typescript开发angular模块(发布npm包)
python学习笔记5.4-包的发布
本文介绍了如何利用Python包的发布工具发布自己的Python包。主要包括了setup.py和MANIFEST.ni文件的介绍和编写,以及包安装的过程。
锦小年
2018/01/02
5730
如何使用npm发布自己的npm包
一. 创建 在npm的官网上注册一个账号,https://www.npmjs.com/ 1:在本地通过npm init 初始化一个项目,并建一个index.js 文件,因为index.js为默认进入的文件,如下: image-ab2ede5fb9d14ab8bb059eb63257c67c.png 2:在本地将该创建的项目打开,并在index.js编写想要写的文件(这里简单写一个排序),如下: image-1dc4644452b844869943897ce6cfd223.png 3:接下来通过npm
小吕
2022/06/16
1.5K0
如何使用npm发布自己的npm包
如何使用npm发布自己的npm包
一. 创建 在npm的官网上注册一个账号,https://www.npmjs.com/ 1:在本地通过npm init 初始化一个项目,并建一个index.js 文件,因为index.js为默认进入的文件,如下: 2:在本地将该创建的项目打开,并在index.js编写想要写的文件(这里简单写一个排序),如下: 3:接下来通过npm login来登录你之前创建的npm账号,如下: 4:npm pubish 二. 使用 npm install 包名 三. 版本更新 更改版本号 重新发布
小吕
2022/09/26
3.8K0
如何使用npm发布自己的npm包
提取视频中的音频——python三行程序搞定「建议收藏」
  身处数据爆炸增长的时代,各种各样的数据都飞速增长,视频数据也不例外。我们可以使用 python 来提取视频中的音频,而这仅仅需要安装一个体量很小的python包,然后执行三行程序!   语音数据在数据分析领域极为重要。比如可以分析语义、口音、根据人的情绪等等。可以应用于偏好分析、谎话检测等等。
全栈程序员站长
2022/08/26
1.5K0
提取视频中的音频——python三行程序搞定「建议收藏」
点击加载更多

相似问题

DBIx::Class和DBIx::Abstract?

19

Catalyst中的DBIx::Class升级(DBIx::Class::Schema::Loader)

11

如何修改DBIx::Class::Row?

23

DBIx::Class::ResultSet问题

10

DBIx::Class临时列

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文