jQuery.fn.sizeTo

HTML

<div class="div" id="div1">Foo</div>
<div class="div" id="div2">Bajfal;skjalsdkfjadklsf a dfal;dsfj adsfr</div>

CSS

.div{border:1px solid #F00; padding:0 4px;}
#div1{width:100px;}
#div2{width:200px; border-width:2px; padding:0 10px;}

JavaScript

/**
 * Determine basic dimensions of an element
 *  @author PseudoNinja (email at pseudoninja dot com)
 * @returns object
 */

jQuery.fn.getDimensions = function () {
    var $this = $(this),
        dimensions = {
            width: 0,
            paddingLeft: 0,
            paddingRight: 0,
            borderLeft: 0,
            borderRight: 0,
            getOuterWidth: function () {
                return parseInt(this.width) + parseInt(this.paddingLeft) + parseInt(this.paddingRight) + parseInt(this.borderLeft) + parseInt(this.borderRight);
            }
        };

    dimensions.width = $this.width();
    dimensions.paddingLeft = $this.css('padding-left').replace(/[^-\d\.]/g, '');
    dimensions.paddingRight = $this.css('padding-right').replace(/[^-\d\.]/g, '');
    dimensions.borderLeft = $this.css('border-left-width').replace(/[^-\d\.]/g, '');
    dimensions.borderRight = $this.css('border-right-width').replace(/[^-\d\.]/g, '');
    dimensions.outerWidth = $this.outerWidth();

    return dimensions;
};

/** size element to width if target
 *  @author PseudoNinja (email at pseudoninja dot com)
 *  @param  {string} target - selector of element to clone width
 */
jQuery.fn.sizeTo = function (target) {
    var $this = $(this),
        $target = $(target),
        myDimensions = $this.getDimensions(),
        targetDimensions = $target.getDimensions(),
        difference = targetDimensions.outerWidth - myDimensions.outerWidth,
        adjOuterWidth = 0
    ;

    if (difference > 0) {
        myDimensions.width = myDimensions.width + difference;
        adjOuterWidth = myDimensions.getOuterWidth();
        $this.width(myDimensions.width);
    }

    // Add persistance to size change
    setTimeout(function () {
        $this.sizeTo(target);
    }, 100);

    return $this;
};

$(function(){
    $("#div1").sizeTo($("#div2"));
});