首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery中的等高列

jQuery中的等高列
EN

Stack Overflow用户
提问于 2010-12-07 15:25:19
回答 1查看 2K关注 0票数 2

嗨,我正在寻找一个基于jQuery的等高列。我知道有很多这样的问题,但是,我的要求有点不同,。我想在一个超级菜单中使用这些,其中你大约有4-5个下拉菜单,每个下拉菜单都有3-4列。

我想要所有3-4列的高度相同,但不是在所有的下拉,因为列的高度将是不同的,在另一个下拉取决于该部分的内容。

我在MooTools中找到了一个解决方案,它非常适合我的需求。下面的MooTools代码使特定div中的所有列都等于其父div的高度。

MooTools代码:

代码语言:javascript
复制
var Equalizer = new Class({
 initialize: function(elements) {
  this.elements = $$(elements);
 },
 equalize: function(hw) {
  if(!hw) { hw = 'height'; }
  var max = 0,
   prop = (typeof document.body.style.maxHeight != 'undefined' ? 'min-' : '') + hw; //ie6 ftl
   offset = 'offset' + hw.capitalize();
  this.elements.each(function(element,i) {
   var calc = element[offset];
   if(calc > max) { max = calc; }
  },this);
  this.elements.each(function(element,i) {
   element.setStyle(prop,max - (element[offset] - element.getStyle(hw).toInt()));
  });
  return max;
 }
});

使用:

代码语言:javascript
复制
var columnizer = new Equalizer('.sizeMe').equalize('height'); //call .equalize() as often as you want!

有人能帮我在jQuery中转换这段代码吗?实际上,我的整个模板都是基于jQuery的,只是对于这个等高函数,我不想加载另一个JavaScript库。

帮帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-07 17:11:04

是的,认为这可能是有用的,所以让它在一个jQuery插件为您。

演示:http://jsfiddle.net/AXqBb/

equalizer.js:

代码语言:javascript
复制
(function($) {
    String.prototype.capitalize = function() {
        return this.replace(/^(.)/, function (c) { return c.toUpperCase(); })
    };

    $.fn.equalize = function(hw) {
        if (!hw) {
            hw = 'height';
        }

        var max = 0;
        var prop = (typeof document.body.style.maxHeight != 'undefined' ? 'min' + hw.capitalize() : hw);
        var offset = 'offset' + hw.capitalize();

        this.each(function() {
            var calc = parseInt(this[offset]);
            if (calc > max) {
                max = calc;
            }
        });

        this.each(function() {
            $(this).css(prop, max - (parseInt(this[offset]) - $(this)[hw]()));
        });

        return max;
    };
})(jQuery);

像这样叫:

代码语言:javascript
复制
var maxHeight = $('.sizeMe').equalize('height');

我保持代码尽可能类似于您发布的内容,这样您就可以看到更改,所以为任何不好的风格道歉-希望它可以归因于原作者。;-)

注意:我在此代码中添加了一个基本的首字母大写函数;如果已经定义了,则需要删除该函数。

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

https://stackoverflow.com/questions/4378314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档