如果DIV有任何margin-top / margin-bottom,我将如何添加到下面的代码中?我目前的情况是我有2列(DIV)1有一个margin-top而另一列没有导致列不能正确排列。
很抱歉,代码已缩小,我丢失了原件。
$.fn.equalHeight = function (a) {
var b = {
delay: 100,
minusHeight: 0
};
var a = $.extend(b, a);
var c = 0;
var d = 0;
var e = $(this);
setTimeout(function () {
e.each(function () {
c = $(this).outerHeight();
d = c > d ? c : d
});
return e.each(function () {
var b = $(this);
var c = d - (b.outerHeight() - b.height()) - a.minusHeight;
var e = jQuery.browser.msie && jQuery.browser.version < 7 ? "height" : "min-height";
b.css(e, c + "px")
})
}, a.delay)
};
答案 0 :(得分:2)
您应该将true
作为参数添加到.outerHeight()
,以便它包含计算中的边距。
但您的代码还有另一个问题..您无法从超时中返回任何内容,而您似乎已将返回代码放在那里..
这意味着你打破了jQuery链系统..
您的代码应该是
$.fn.equalHeight = function(a) {
var b = {
delay: 100,
minusHeight: 0
};
var a = $.extend(b, a);
var c = 0;
var d = 0;
this.each(function() {
c = $(this).outerHeight(true);
d = c > d ? c : d;
});
return this.each(function() {
var b = $(this);
var c = d - (b.outerHeight(true) - b.height()) - a.minusHeight;
var e = (jQuery.browser.msie && jQuery.browser.version < 7) ? "height" : "min-height";
setTimeout( function(){
b.css(e, c + "px");
}, a.delay);
});
};
演示
答案 1 :(得分:1)
您可以使用jQuery的css()
函数检查div的边距。不幸的是,不支持margin
之类的简写css属性,您必须以css('marginTop')
,css('marginBottom')
等形式执行此操作。然后,您可以有条件地修改每个div
,以便它排成一行。