我使用带有类似if语句的JS,以便Divs
并排。正如主题标题所暗示的那样,这些if语句能否以任何方式组合或提高效率?
编辑:此代码的目的是使所有Div的高度相同。
JS:
$(document).ready(function(){
$('.container').each(function(){
var firstDiv = $(this).find('.first');
var secondDiv = $(this).find('.second');
var thirdDiv = $(this).find('.third');
var fourthDiv = $(this).find('.fourth');
if(firstDiv.height() >= secondDiv.height()){
secondDiv.css('height',firstDiv.height());
} else {
firstDiv.css('height',secondDiv.height());
}
if(secondDiv.height() >= thirdDiv.height()){
thirdDiv.css('height',secondDiv.height());
} else {
secondDiv.css('height',thirdDiv.height());
}
if(thirdDiv.height() >= fourthDiv.height()){
fourthDiv.css('height',thirdDiv.height());
} else {
thirdDiv.css('height',fourthDiv.height());
}
});
});
答案 0 :(得分:3)
如果您的目标是使所有高度达到任何最大高度,则当前代码将无效(除非第一个div是最高的)。
解决方案:首先检查最大高度的高度,然后将高度应用于所有高度。
$(document).ready(function () {
$('.container').each(function () {
var $divs = $('.blah', this);
var height = 0;
$divs.each(function(){
height = Math.max($(this).height(), height);
});
$divs.css('height',height);
});
});
JSFiddle: http://jsfiddle.net/TrueBlueAussie/8hko6of7/1/
备注强>
如果你的目标不是其他,请详细解释:)
答案 1 :(得分:3)
由于代码的意图是均衡所有div的高度,你可以否定任何if
语句的需要,并使用jQuery的map()
来达到所有高度,然后使用Math.max
获得最高。试试这个:
$('.container').each(function(){
var $divs = $('.first, .seconds, .third, .fourth', this);
var heights = $divs.map(function() {
return $(this).height();
}).get();
$divs.height(Math.max.apply(this, heights));
});
请注意,可以通过向所有div添加单个公共类来改进初始选择器。