2010-03-03 62 views
2

我使用这个脚本来平衡元素的高度:查找最长的元素(jQuery的)

(function ($) { 
    $.fn.autoheight = function() { 
     var height = 0, 
      reset = $.browser.msie ? "1%" : "auto"; 
     return this.css("height", reset).each(function() { 
      height = Math.max(height, this.offsetHeight); 
     }).css("height", height).each(function() { 
      var h = this.offsetHeight; 
      if (h > height) { 
       $(this).css("height", height - (h - height)); 
      }; 
     }); 
    }; 
})(jQuery); 

我想只是一个额外的功能添加到它 - addclass“最长的”以时发现最长的元素均衡高度,我在上面的脚本中改变了什么?

非常感谢。

+0

你的意思是最宽吗? – 2010-03-03 12:06:12

+0

它关于平衡高度,所以'最长'更合适? – 3zzy 2010-03-03 12:11:00

+0

“最高”或“最高”或可能“最大”更合适。宽度 - >最宽,高度 - >最高/最高,长度 - >最长。 – cletus 2010-03-03 12:13:42

回答

1

考虑到这个更多的伪代码,因为它没有被测试(甚至运行)。更改代码里面//新代码评论

(function ($) { 
    $.fn.autoheight = function() { 
     var height = 0, 
      highest = 0, //new code 
      reset = $.browser.msie ? "1%" : "auto"; 
     return this.css("height", reset).each(function() { 
      height = Math.max(height, this.offsetHeight); 
      //new code 
      if (height > highest) { 
       highest = height; 
       $("*").removeClass("longest"); 
       $(this).addClass("longest"); 
      }; 
      //new code 
     }).css("height", height).each(function() { 
      var h = this.offsetHeight; 
      if (h > height) { 
       $(this).css("height", height - (h - height)); 
      }; 
     }); 
    }; 
})(jQuery); 
+0

不起作用。 :( – 3zzy 2010-03-03 17:05:25

+0

刚刚检查过Alex的jsFiddle例子,它似乎可以正常工作,你可以使用Firebug检查结果DOM,看看一个div是否添加了'最长'类 – 2010-03-03 18:46:01

2

Steve Claridge的上述解决方案,你说不起作用 - 工作适合我; http://jsfiddle.net/ZqFp5/

(仅测试铬)虽然使用

$("*") 

选择是在一个大的DOM有点低效,考虑增加一个类来div的,如果可以使用更具体的选择。

$(".foo") 
+0

+1/2证明我正确!+ 1/2为jsfiddle测试 – 2010-03-03 18:46:46