JQuery.load可以工作,但不能。调整大小

JQuery.load可以工作,但不能。调整大小,jquery,load,resize,Jquery,Load,Resize,所以这个函数的onLoad部分工作得很好,但是当我调整窗口大小时,它不会调整高度。仅使用onLoad,每次调整窗口大小以使div高度相等时,我都需要刷新页面,但不确定原因。resize不起作用 我犯了错误吗 //equalize funciton function equalHeight(group) { tallest = 0; group.each(function() { thisHeight = $(this).height(); if(t

所以这个函数的onLoad部分工作得很好,但是当我调整窗口大小时,它不会调整高度。仅使用onLoad,每次调整窗口大小以使div高度相等时,我都需要刷新页面,但不确定原因。resize不起作用

我犯了错误吗

//equalize funciton
function equalHeight(group) {
    tallest = 0;
    group.each(function() {
        thisHeight = $(this).height();
        if(thisHeight > tallest) {
            tallest = thisHeight;
        }
    });
    group.height(tallest);
}


$(窗口).load(函数(){
等高($(“#div#u right,#div#u left,#div#u bottom,.border”);
}); 
$(窗口)。调整大小(函数(){
等高($(“#div#u right,#div#u left,#div#u bottom,.border”);
});
$(文档).ready(函数(){
等高($(“#div#u right,#div#u left,#div#u bottom,.border”);
}); 

将上面的所有JavaScript替换为以下内容:

<!-- Include jQuery somewhere up here -->
<script type="text/javascript">
  // Equalize function
  function equalHeight(group) {
    tallest = 0;
    group.each(function() {
      thisHeight = $(this).height();
      if(thisHeight > tallest) { tallest = thisHeight; }
    });
    group.height(tallest);
  }

  (function($){

    $(window).resize(function() { 
      equalHeight($("#div_right, #div_left, #div_bottom, .border")); 
    }).resize();

  })(jQuery);
</script>

//均衡函数
功能相等高度(组){
最高=0;
组。每个(函数(){
thisHeight=$(this).height();
如果(thisHeight>最高){最高=thisHeight;}
});
身高(最高);
}
(函数($){
$(窗口)。调整大小(函数(){
等高($(“#div#u right,#div#u left,#div#u bottom,.border”);
}).resize();
})(jQuery);

这样做有用吗?

一旦您通过脚本使用内联css设置了高度,它们在调整大小之前、期间和之后都将是相同的固定高度……与页面加载时设置的值相同。那个高度仍然是直线

如果不存在其他内联css,则需要使用
removeAttr('style')
,或者将每个css的内容包装到另一个元素中,检查内部包装的高度,并使用该值设置主元素

编辑:尝试此版本,它包装内部并使用内部来测试高度

//equalize funciton
function equalHeight(group) {
    tallest = 0;
    group.each(function() {
        thisHeight = $(this).find('.inner_wrap').height();
        if(thisHeight > tallest) {
            tallest = thisHeight;
        }
    });
    group.height(tallest);
}
$(document).ready(function() { 
    var $group=$("#div_right, #div_left, #div_bottom, .border")
    $group.wrapInner('<div class="inner_wrap">');   
    equalHeight($group); 
});
//均衡函数
功能相等高度(组){
最高=0;
组。每个(函数(){
thisHeight=$(this.find('.internal_wrap').height();
如果(此高度>最高){
最高=此高度;
}
});
身高(最高);
}
$(文档).ready(函数(){
变量$group=$(“#div_right,#div_left,#div_bottom,.border”)
$group.wrapInner(“”);
等高($组);
});
编辑:如果组中不同班级的填充不同,则会出现陷阱。如果是这种情况,则需要更改css以使填充在内部而不是外部,或者需要在函数中添加额外的数学

//equalize funciton
function equalHeight(group) {
    tallest = 0;
    group.each(function() {
        thisHeight = $(this).css({'height':'auto'}).height();
        if(thisHeight > tallest) {
            tallest = thisHeight;
        }
    });
    group.height(tallest);
}

$(window).on('load resize',function() { 
    equalHeight($("#div_right, #div_left, #div_bottom, .border")); 
});
//“on”函数需要jquery1.7,我想


例如fiddle:

不工作意味着函数是否正在调用,或者
函数中是否存在任何错误。resize
函数?工作正常您真正想要的是什么?您是否试图说,如果JS已经设置了新的高度值,则无法设置新的高度值?不是真的。@Marcel-一点也不这么说!但是,一旦“高度”设置为“内联”,它就不再是流体。这一部分是绝对正确的…在移除现有高度之前,它是固定的。这对于缩小窗口非常有用,但当我将窗口拖回时,我再次遇到刷新问题。对不起,回复太晚了…请检查这把小提琴。在这两种情况下,它都调整得很好,使窗户更小或更大。如果你能提供一个链接到这个场景,或者一个问题存在的地方,我们可以看看它来解决你的问题,谢谢。
//equalize funciton
function equalHeight(group) {
    tallest = 0;
    group.each(function() {
        thisHeight = $(this).css({'height':'auto'}).height();
        if(thisHeight > tallest) {
            tallest = thisHeight;
        }
    });
    group.height(tallest);
}

$(window).on('load resize',function() { 
    equalHeight($("#div_right, #div_left, #div_bottom, .border")); 
});