jQuery: The Write Less, Do More JavaScript Library

Ticket #2071: css.2.diff

File css.2.diff, 2.1 kB (added by brandon, 8 months ago)
  • src/core.js

     
    352352            else 
    353353                selector = jQuery.multiFilter( selector, this ); 
    354354 
    355         var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; 
    356355        return this.filter(function() { 
    357             return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector; 
     356            return jQuery.inArray( this, selector ) < 0; 
    358357        }); 
    359358    }, 
    360359 
     
    764763 
    765764    // A method for quickly swapping in/out CSS properties to get correct calculations 
    766765    swap: function( elem, options, callback ) { 
     766        var old = {}; 
    767767        // Remember the old values, and insert the new ones 
    768768        for ( var name in options ) { 
    769             elem.style[ "old" + name ] = elem.style[ name ]; 
     769            old[ name ] = elem.style[ name ]; 
    770770            elem.style[ name ] = options[ name ]; 
    771771        } 
    772772 
     
    774774 
    775775        // Revert the old values 
    776776        for ( var name in options ) 
    777             elem.style[ name ] = elem.style[ "old" + name ]; 
     777            elem.style[ name ] = old[ name ]; 
    778778    }, 
    779779 
    780780    css: function( elem, name, force ) { 
    781781        if ( name == "width" || name == "height" ) { 
    782             var width, height, props = { position: "absolute", visibility: "hidden", display:"block" }; 
     782            var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ]; 
    783783         
    784784            function getWH() { 
    785                 width = elem.clientWidth; 
    786                 height = elem.clientHeight; 
     785                val = name == "width" ? elem.offsetWidth : elem.offsetHeight; 
     786                var padding = 0, border = 0; 
     787                jQuery.each( which, function() { 
     788                    padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0; 
     789                    border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0; 
     790                }); 
     791                val -= Math.round(padding + border); 
    787792            } 
    788793         
    789794            if ( jQuery(elem).is(":visible") ) 
    790795                getWH(); 
    791796            else 
    792797                jQuery.swap( elem, props, getWH ); 
    793  
    794             return name == "width" ? width : height; 
     798             
     799            return val; 
    795800        } 
    796801         
    797802        return jQuery.curCSS( elem, name, force );