优化(几乎最小化)jqueryui 菜单的宽度

2023-12-08

我有一个Jqueryui菜单这是在运行时生成的 AJAX。它是生成的 HTML is

 <ul id='menu_id'>
   <li>-</li>
   <li>the_system</li>
   <li>the_agenda</li>
 </ul>

首先<li>-</li>是故意的行分隔符。其他列表项都包含单个单词(类似 C 的标识符),例如<li>this_little_thing</li>....字体不是等宽的。菜单最终应该用于自动完成目的“内部”(实际上是“之上”)一些<textarea>.

当然,Javascript正在做类似的事情

var mymenu=$("#menu_id");
mymenu.menu({
        select: function(ev,ui) {
           console.log("menu selected ev=", ev, " ui=", ui);
        }
});

但我不知道如何计算该菜单的几乎最小宽度。目前,该菜单跨越其容器的整个宽度,因此几乎与网页一样宽。我尝试了几件事,例如:

    var minwidth = 40;
    /// dont work, the el has same width as body
    mymenu.children("li").each(function(ix,el) {
        console.log("ix=", ix, " el=", el, " .firstChild=", el.firstChild);
        var elw = el.firstChild.clientWidth;
        console.log("ix=", ix, " elw=", elw);
        if (minwidth<elw)
           minwidth=elw;
    });

血淋淋的细节

与我的上下文相同previous问题:Firefox 38 或 42、Jquery 2.2.0、Jquery-Ui 1.11.4、Linux/Debian/Sid/x86-64,适用于我的自由软件 GPL alpha 阶段熔体监测仪;我说的是提交e89f3f807ec..如果这很重要的话。如果您有足够的勇气构建并测试它,请运行

  ./monimelt -Drun,web -W localhost.localdomain:8086/ -J 3

then browse http://localhost.localdomain:8086/nanoedit.html and type in the <textarea> right to Command: the three letters the, and then press simultaneously Ctrl Space ; a completion menu should appear, but it is way too wide!


Screenshot of Melt Monitor inside Firefox


(in the image the menu is in gray, above the send command button near bottom; in my webroot/nanoedit.js file, it is built in function mom_cmdkeypress after line 215; the menu_id HTML5 id is in fact commandcompletemenu_id and my Javascript variable is menuel not mymenu )

简化的 Jsfiddle (MVCE)

This https://jsfiddle.net/bstarynk/2k464q18/jsfiddle 显示了与 HTML 相同的问题

 <h2> my menu </h2>
 <div id='mymenudiv_id'>
  <ul id='menu_id'>
    <li>-</li>
    <li>the_system</li>
    <li>the_agenda</li>
  </ul>
 </div>
 <h2  id='width_id'>-</h2>

和 JavaScript:

var mymenu;
$(document).ready(function() {
   mymenu = $("#menu_id");
   var mywidth = 40;
   mymenu.children("li").each(function(ix, el) {
     console.log("menu-children ix=", ix, " el=", el);
     var elw = $(el).width();
     console.log("menu-children ix=",ix, " elw=", elw);
     if (mywidth<elw)
        mywidth = elw;
   });
   $("#width_id").html("mywidth="+mywidth.toFixed(0));
   mymenu.menu({
        select: function(ev, ui) {
          console.log("menu-select ev=", ev, " ui=", ui);
   }
 })
})

和标准https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.cssCSS;在我的浏览器上显示mywidth=523这显然是错误的。 另外,替换var elw = $(el).width();在 JsFiddle 中var elw = el.clientWidth;不要改变任何东西。

更简单的问题

也许我只是想知道 CSS3 设置是什么<ul>垂直对齐的小元素<li>元素和minimal宽度以适合最宽的<li>,但我想不通......所以我问了CSS3 制作一个适合其 li 的薄 ul问题。


None

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

优化(几乎最小化)jqueryui 菜单的宽度 的相关文章

随机推荐

  • Java 中的接口如何工作?

    我正在自学 Java 并且我被困在有关接口的一章中 我根本无法理解它们在 Java 中是如何工作的 我相信我完全理解界面的含义以及它们如何应用于日常情况和技术 但当涉及到 Java 时 无论是代码方面还是逻辑方面 我都陷入了困境 我不明白
  • Swing - 根据单元格的值设置单元格的颜色

    我想根据单元格的值设置单元格的颜色 在谷歌搜索了一下后 我发现我可以使用这样的东西来做到这一点 public class TableCellRenderer extends DefaultTableCellRenderer Override
  • 是否有用于构建在浏览器中运行的桌面应用程序的开源框架? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我有兴趣启动一个开源项目 该项目可以打包为非技术最终用户的桌面应用程序 但可以在浏览器中运行 一个现有模型是谷歌精炼 我正在寻找一个现有的开源框架这
  • 可以用innerHTML插入脚本吗?

    我尝试使用以下命令将一些脚本加载到页面中innerHTML on a div 该脚本似乎已加载到 DOM 中 但从未执行过 至少在 Firefox 和 Chrome 中 有没有办法让脚本在插入时执行innerHTML 示例代码 Should
  • 空手道 - 如何导入 json 数据

    我想将一些 JSON 数据导入到我的测试中 为了记录我应该这样做 def data read classpath init data json 我已经使用以下内容创建了 JSON 文件 name ehsan 这是我的代码 Backgroun
  • 在 DirectShow 中预览相机并捕获静态图像 - 在 VB.net 中

    我正在尝试在 Visual Studio 2008 中编写一个程序 该程序将访问网络摄像头 在屏幕上显示预览 然后在按下按钮时保存静态快照 jpg 稍后我将把它与数据库集成 但我不应该对那部分有问题 经过一些研究后 看起来 DirectSh
  • 正则表达式从代码中删除方法

    使用正则表达式 我尝试从以下代码中删除所有方法 函数 不考虑 全球范围 但是 我无法使其与方法的所有内部内容匹配
  • 请求多个 API 并在 SQLITE 上存储多个表的最佳方式

    问题是 如何在sqlite上存储 我的意思是如何在 2 个表上存储 2 个 API 数据 我有多个 API 来获取和存储缓存中的数据 目前 我一项一项地做 如下所示 按下按钮 await HelperDatabase1 storeRegis
  • 在 App Engine 上设置 Memcached 以进行 Django 会话缓存

    当设置 Django 使用 Memcached 进行缓存时 在我的例子中 我想使用会话缓存 settings py we set CACHES default BACKEND django core cache backends memca
  • Swift:数组排序未正确完成

    我用它来对 Swift 数组中的组件进行排序 myArray myArray sorted 0 localizedCaseInsensitiveCompare 1 NSComparisonResult OrderedAscending 但是
  • 如何在 x86_64 上的前 4GB 内“malloc”

    平台 Mac OS X郎 Obj C C 是否有可能以某种方式使 malloc 在进程地址空间的前 4GB 内分配内存 我正在模拟 i386 堆栈 需要保证地址位于允许的 32 位范围内 使用 mmap MAP FIXED 需要在任何 ma
  • 如何在 Verilog 中定义带参数的模块?

    我想定义一个add有一个参数的模块 但我对新实例的声明进展不顺利 我想定义这个模块的一个实例 module add parameter wd 1 input wire wd 1 0 a b output wire wd 1 0 o assi
  • 将自定义对象的 ArrayList 写入文件

    我有一个 ArrayList 其中包含自定义服务对象 我想将整个 ArrayList 写入一个文件 然后能够读取它 我尝试了 Gson 但它给了我一个 IllegalStateException Expected BEGIN ARRAY b
  • 将可见性绑定到 DataContext

    我有一个值转换器 可以将 null 转换为 Visibility Collapsed 现在我尝试在用户控件中使用它 以便当 DateContext 为 null 时整个控件会崩溃 该控件如下所示
  • 对多个列使用 CROSS APPLY

    使用 SQL Server 第 3 天 我正在尝试将 2 列分隔数据合并为表值函数的一个输出 这是我的数据 我希望处理数据并将其放入以下格式的表中 我目前trying使用这个 CROSS APPLY SQL 语句 但我不知道我在做什么 US
  • AngularJS - 将 ngTouch 重定向与 ngRoute 一起使用不适用于 href 和 ng-click 属性

    我使用 ngRoute 浏览应用程序 我使用如下链接 a href page2 Link a 由于我使用 ngTouch 导航不适用于触摸设备 我用 Android 手机和 Chrome 的设备模拟器尝试过 在桌面上一切正常 当我删除 ng
  • VSTO WPF ContextMenu.MenuItem 单击未引发的 TaskPane 外部

    当光标位于任务窗格之外时 不会引发上下文菜单项的单击事件 我不知道如何让它发挥作用 90 的情况下 单击是在任务窗格之外进行的 打开上下文菜单时 子菜单通常显示在任务窗格之外 见下图 在这种情况下 不会引发上下文菜单中的单击事件 我完全不知
  • 在scrapy框架python中为start_urls列表中的url构建正则表达式

    我对 scrapy 很陌生 之前也没有使用过正则表达式 以下是我的spider py code class ExampleSpider BaseSpider name test code allowed domains www exampl
  • 为什么同步睡眠函数没有通过在 Promise 中实现异步? [复制]

    这个问题在这里已经有答案了 我正在尝试了解 Promise 以及 JavaScript 如何与其队列和事件循环等一起工作 我认为如果我将一个慢速同步函数放入一个承诺中 该慢速同步函数将被委托给后台 我可以使用 then完成后处理它 func
  • 优化(几乎最小化)jqueryui 菜单的宽度

    我有一个Jqueryui菜单这是在运行时生成的 AJAX 它是生成的 HTML is ul li li li the system li li the agenda li ul 首先 li li 是故意的行分隔符 其他列表项都包含单个单词