JQuery .load工作但不是.resize

时间:2012-06-17 04:41:22

标签: jquery load resize

所以这个函数的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);
}

<script type="text/javascript"> 
$(window).load(function() { 
    equalHeight($("#div_right, #div_left, #div_bottom, .border")); 
}); 
</script>
<script type="text/javascript"> 
$(window).resize(function() { 
    equalHeight($("#div_right, #div_left, #div_bottom, .border")); 
});

$(document).ready(function() { 
    equalHeight($("#div_right, #div_left, #div_bottom, .border")); 
}); 
</script>

3 个答案:

答案 0 :(得分:1)

//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'函数需要jQuery 1.7,我想。

exampleFIDDLE:http://jsfiddle.net/sabithpocker/xgYBZ/

答案 1 :(得分:0)

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

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

编辑:尝试这个包装内部并使用它们来测试高度的版本

//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); 
});

编辑:如果组中的各个类的填充不同,则会出现陷阱。如果是这种情况,则需要更改css,因此padding在内部而不是外部,或者需要在函数中添加额外的数学。

答案 2 :(得分:-1)

使用以下内容替换上面的所有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>

这样做可以吗?