Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 优化(几乎最小化)jqueryui菜单的宽度_Javascript_Jquery_Html_Jquery Ui_Firefox - Fatal编程技术网

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

Javascript 优化(几乎最小化)jqueryui菜单的宽度,javascript,jquery,html,jquery-ui,firefox,Javascript,Jquery,Html,Jquery Ui,Firefox,我有一个在运行时生成的AJAX。它生成的HTML是 但是我不知道如何计算菜单的最小宽度。目前,该菜单横跨其容器的整个宽度,因此几乎与网页一样宽。我尝试了几种方法,例如: 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, "

我有一个在运行时生成的AJAX。它生成的HTML是

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

    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;
    });
然后浏览并在
右侧键入命令:三个字母
,然后同时按Ctrl空格键;应该出现一个完成菜单,但它太宽了



(在图像中,菜单是灰色的,位于底部附近的
send command
按钮上方;在my中,它是在第215行之后内置的函数
mom\u cmdkeypress
;菜单idHTML5 id实际上是
commandcompletemenu\u id
,我的Javascript变量是
menuel
而不是
mymenu

简化JSFIDLE(MVCE) 这个JSFIDLE显示了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);
   }
 })
})
var-mymenu;
$(文档).ready(函数(){
mymenu=$(“#menu_id”);
var-mywidth=40;
mymenu.children(“li”)。每个功能(ix,el){
console.log(“菜单子项ix=”,ix,“el=”,el);
var elw=$(el).width();
log(“菜单子项ix=”,ix,“elw=”,elw);

如果(MyWidth在我看来,似乎您缺少菜单的css。一个复制问题的MVCE示例会有所帮助。有很多javascript沙箱站点可以在几分钟内设置此功能。如果使用默认的,我仍然存在此问题。可能的重复项--看起来链接的问题有您想要的答案,我们也可以这样做。)I’我会关闭这一个对我来说听起来好像你缺少菜单的css。一个复制问题的MVCE示例会有所帮助。有很多javascript沙箱站点可以在几分钟内完成设置。如果使用默认的,我仍然有这个问题。可能的重复-,看起来链接的问题有你一直在寻找的答案好吧,把这个关上
  ./monimelt -Drun,web -W localhost.localdomain:8086/ -J 3
 <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>
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);
   }
 })
})