jquery等高插件添加边距

时间:2011-10-24 14:58:43

标签: jquery jquery-plugins

如果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)
};

2 个答案:

答案 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);
    });
};

http://jsfiddle.net/gaby/DXHtk/

演示

答案 1 :(得分:1)

您可以使用jQuery的css()函数检查div的边距。不幸的是,不支持margin之类的简写css属性,您必须以css('marginTop')css('marginBottom')等形式执行此操作。然后,您可以有条件地修改每个div,以便它排成一行。