修改jquery重置为浏览器窗口将重新大小

问题描述:

我有一个类似divs的响应式布局,我正在应用jquery,因此所有的div匹配更多内容的高度。但是,如果浏览器窗口要重新调整大小,所有div保持不变,因为页面加载时会使文本脱离div。有没有办法以某种方式继续运行JQuery每次用户调整浏览器窗口?修改jquery重置为浏览器窗口将重新大小

为了说明我正在努力实现的目标,让我的div在文本内容和属性宽度上表现为(在浏览器窗口rezise上)为普通div。身高:自动;唯一的区别是所有的div都会匹配高度较高的div的高度。

这里是我有什么链接:http://as.sjsu.edu/cf/vaishak/equalizeTest/index.html

这里是Jquery的,我本来要得到最大高度:

<script> 
jQuery(function(){ 
var maxHeight = 0; 
$(".box").each(function(){ 
    if ($(this).height() > maxHeight) { maxHeight = $(this).height(); } 
}); 
$(".box").height(maxHeight); 
}); 
</script> 

下面是更新后的版本仍然无法正常工作当窗口调整大小时。

$(document).ready(function(){ 
    $(window).resize(function(event) { 
     resizeDiv(); 
    }); 
    $(document).ready(function(){ 
     resizeDiv(); 
    }); 
    function resizeDiv(){ 
     var maxHeight = 0; 
     $(".box").each(function(){ 
      if ($(this).height() > maxHeight) { maxHeight = $(this).height(); } 
     }); 
     $(".box").height(maxHeight); 
    } 
    }); 

任何帮助将不胜感激!

+0

是否有一个特定的原因,你使用JavaScript来使元素高度相等,而不是纯粹的CSS? – cimmanon 2013-05-02 18:40:07

+0

我不知道如何用纯CSS做到这一点,我的布局是响应式的,所以我不能用div下的bg img来伪造它。 – irm 2013-05-02 19:21:09

你可以忘掉使用JavaScript,这和使用纯CSS:

http://cssdeck.com/labs/ygq5x6k3

<div class="container"> 
    <div>First</div> 
    <div>Second</div> 
</div> 

.container { 
    display: table; /* optional */ 
    width: 100%; /* optional */ 
} 

.container div { 
    display: table-cell; 
} 

它的弹性,并且与许多“栏目工作“如你所需。由于其纯CSS,您甚至可以通过媒体查询为移动设备禁用它。

+0

嘿,非常感谢。这似乎工作,但有没有办法在divs之间有利润。这是我想要完成的:http://as.sjsu.edu/cf/vaishak/equalizeTest/index.html – irm 2013-05-02 20:38:24

+0

当然:http://cssdeck.com/labs/ogu17bqd。您需要使用负边距来沿着外边缘抵消它们。 – cimmanon 2013-05-02 20:41:26

+0

我用相同颜色的背景边框假边缘。 – irm 2013-05-02 20:48:05

当然,你可以使用jQuery的.resize()事件记录在这里:http://api.jquery.com/resize/

例如:

$(window).resize(function() { // YOUR CODE HERE });

然后在每次调整窗口大小时,该代码将运行。

这是一个JSFiddle example,它演示了代码的运行时间。

这是事件监听器的用途。你可以把你的代码放到一个函数中,比如说normalizeBoxHeight(),然后在浏览器调整大小时(并且在开始加载时)调用它。

是这样的:

jQuery(function(){ 

    var normalizeBoxHeight = function(){ 
     var maxHeight = 0; 
     $(".box").each(function(){ 
      if ($(this).height() > maxHeight) { maxHeight = $(this).height(); } 
     }); 
     $(".box").height(maxHeight); 
    } 

    $(window).resize(normalizeBoxHeight); 
    normalizeBoxHeight(); 

}); 
+0

事实上,我仍然没有得到我想要完成的任务,并且在调整窗口大小后文本会熄灭。 :/ – irm 2013-05-02 19:17:14

+0

嗯,我会告诉你,这段代码完成了你要求的任务(最初触发和调整窗口大小后)。如果它没有产生预期的效果,那么它与你的标记/ CSS或其他js有关。随意提供一些,看看我们是否无法进一步排除故障。 – idrumgood 2013-05-02 19:25:16

+0

你可能是可行的,而且是别的。这里是链接:http://as.sjsu.edu/cf/vaishak/equalizeTest/index.html感谢您的帮助。 – irm 2013-05-02 20:15:59