2012-07-31 54 views
1

我需要动态调整我的下拉菜单主导航栏,因此将调整以适应导航菜单项名称的字符长度不同不进行重置导航元素的宽度。下面是我到目前为止的代码:jQuery的基于总宽度李

$(document).ready(function(){ 
      var wNav = $("#navigation").outerWidth(); 
      var wLiTotal = 0; 

      $("#navigation>ul>li").each(function(){ 
       wLiTotal += $(this).outerWidth(); 
       if((wLiTotal > wNav)||(wLiTotal < wNav)){ 
       wNav = wLiTotal +3; 
      }; 
      });  
     }); 

的问题是,即使我得到的所有李时珍的总宽度,由于某种原因,它不会重置wNav到宽,我不知道为什么。预先感谢您的帮助。

+1

不应该有一个'$( “#导航”)宽度(wNav);'后的各?我认为outerWidth()只是一个“getter”函数。 – Jens 2012-07-31 22:19:51

+0

有趣的是,尽管文档*要求*'那.outerWidth()'和'.outerHeight()'只是* *干将,你其实可以通过指定一个号码,而不是一个布尔值的设置这些。我还没有尝试过很多,但'outerHeight'肯定适用于内部有很多元素的大型页面容器。 – ClarkeyBoy 2012-07-31 22:41:53

+0

我的错误 - 它的jQuery UI也允许你将它们用作setter。 JS小提琴:http://jsfiddle.net/6tX9u/2/。 – ClarkeyBoy 2012-07-31 22:58:55

回答

1
$(document).ready(function() { 
    var wNav = $("#navigation").outerWidth(); 
    var wLiTotal = 0; 

    $("#navigation>ul>li").each(function() { 
     wLiTotal += $(this).outerWidth(); 
     if ((wLiTotal > wNav) || (wLiTotal < wNav)) { 
      wNav += wLiTotal + 3; // you've increase wNav with its previous value 
     }; 
    }); 
    $("#navigation").width(wNav); // set new wNav as new width 
}); 
+0

那样做!我想这将全部放在最后一行的位置。 – max7 2012-07-31 22:36:46

1

那是因为你只计算outerwidth,而不是设置它。使用

$(document).ready(function(){ 
      var wNav = $("#navigation").outerWidth(); 
      var wLiTotal = 0; 

      $("#navigation>ul>li").each(function(){ 
       wLiTotal += $(this).outerWidth(); 
       if((wLiTotal > wNav)||(wLiTotal < wNav)){ 
       wNav = wLiTotal +3; 
      }; 

      //setting outer width 
      $("#navigation").outerWidth(wNav); 
      });  
     }); 

这个插件jquery.dimensions.etc.js http://bitovi.com/blog/2010/06/set-inner-outer-width-height-with-jquery-dimensions-etc-plugin.html

+0

嗯,即使它让你说什么也行不通。 。 – max7 2012-07-31 22:31:42

+0

尝试'$(“#导航”),宽度(wNav);'也我不明白为什么ü要调整宽度,而不是下拉菜单 – 2012-07-31 22:36:17

+0

Shivam的高度:我需要调整宽度以适应导航项目名称不同的语言即增加字符。 – max7 2012-07-31 22:48:45