使用jQuery的Bootstrap 3 Equal Height列需要js的帮助

 dudumama2011 发布于 2023-02-13 23:34

我一直在使用jQuery的这个位(jQuery等高响应div行)来获得相同的高度并且它工作得非常好,但是如果使用相同的模式,它使用BS2和BS3,它不会扫描行以达到相同的高度,它扫描页面本身,然后同一页面上的所有模式(行> col- -)获得页面上最高的高度.这不是理想的实现.

http://jsbin.com/aVavuLeW/14/

上面的JSBin有一个使用BS3列(它的副本)的例子.您不能在堆叠点的列上具有相对位置,因此为了此Bin的目的已复制这些位置.如您所见,如果您在每一行上创建一个不同的类(在此示例中为.foo和.foo2),然后列表现出来,但如果您决定使用相同的模式,则页面上最高的高度将接管.

问题:如何解决使用相同模式的问题,它是根据页面而不是行计算的?

谢谢!!!

1 个回答
  • 如果我正确理解你希望每一行具有相同的高度,基于最高的div,而每行具有相同的类名值,例如foo,下面的代码就是这样做的.我们的想法是检查已调整大小的元素的父级以及父级是否已更改,即在调整第二个div的div时div.row,然后应用更改并重置max height的值.为了使用指定的父级,引入了一个参数来指定父级选择器. http://jsbin.com/uBeQERiJ/1

    $.fn.eqHeights = function(options) {
    
        var defaults = {  
            child: false ,
          parentSelector:null
        };  
        var options = $.extend(defaults, options); 
    
        var el = $(this);
        if (el.length > 0 && !el.data('eqHeights')) {
            $(window).bind('resize.eqHeights', function() {
                el.eqHeights();
            });
            el.data('eqHeights', true);
        }
    
        if( options.child && options.child.length > 0 ){
            var elmtns = $(options.child, this);
        } else {
            var elmtns = $(this).children();
        }
    
        var prevTop = 0;
        var max_height = 0;
        var elements = [];
        var parentEl;
        elmtns.height('auto').each(function() {
    
          if(options.parentSelector && parentEl !== $(this).parents(options.parentSelector).get(0)){
            $(elements).height(max_height);
            max_height = 0;
            prevTop = 0;
            elements=[];
            parentEl = $(this).parents(options.parentSelector).get(0);
          }
    
            var thisTop = this.offsetTop;
    
            if (prevTop > 0 && prevTop != thisTop) {
                $(elements).height(max_height);
                max_height = $(this).height();
                elements = [];
            }
            max_height = Math.max(max_height, $(this).height());
    
            prevTop = this.offsetTop;
            elements.push(this);
        });
    
        $(elements).height(max_height);
    };
    
    // run on load so it gets the size:
    // can't have the same pattern for some reason or it scans the page and makes all the same height. Each row should be separate but it doesn't work that way.
    $(window).load(function() {
    
    //$('[class*="eq-"]').eqHeights();
      $('.foo [class*="eq-"]').eqHeights({parentSelector:'.foo'});
    /*$('.foo2 [class*="eq-"]').eqHeights();*/
    
      }); 
    

    2023-02-13 23:52 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有