Browse files

Fixes #11938: Adding array getter method to jQuery.fn.css

  • Loading branch information...
1 parent d0d0fa2 commit 4b5b6cf43c65e46d179a93db9f8fd006b79cfc6a @mikesherov committed Dec 11, 2012
Showing with 32 additions and 1 deletion.
  1. +1 −1 src/core.js
  2. +15 −0 src/css.js
  3. +16 −0 test/unit/css.js
View
2 src/core.js
@@ -798,7 +798,7 @@ jQuery.extend({
bulk = key == null;
// Sets many values
- if ( key && typeof key === "object" ) {
+ if ( jQuery.type( key ) === "object" ) {
chainable = true;
for ( i in key ) {
jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
View
15 src/css.js
@@ -98,6 +98,21 @@ function showHide( elements, show ) {
jQuery.fn.extend({
css: function( name, value ) {
return jQuery.access( this, function( elem, name, value ) {
+ var styles, len,
+ map = {},
+ i = 0;
+
+ if ( jQuery.isArray( name ) ) {
+ styles = getStyles( elem );
+ len = name.length;
+
+ for ( ; i < len; i++ ) {
@gibson042
gibson042 added a line comment Dec 11, 2012

-3 bytes by dropping len (var i, styles, map = {};) and changing this to i = name.length; while ( i-- ) {

@mikesherov
Owner
mikesherov added a line comment Dec 11, 2012

I thought of this. And I know there is no true ordering of object keys according to spec, but I'd like to leverage the fact that in implementation they are ordered properly and maintain that order.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
+ map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+ }
+
+ return map;
+ }
+
return value !== undefined ?
jQuery.style( elem, name, value ) :
jQuery.css( elem, name );
View
16 test/unit/css.js
@@ -257,6 +257,22 @@ test("css(String, Object)", function() {
ok( success, "Setting RGBA values does not throw Error" );
});
+test( "css(Array)", function() {
+ expect( 2 );
+
+ var expectedMany = {
+ "overflow": "visible",
+ "width": "16px"
+ },
+ expectedSingle = {
+ "width": "16px"
+ },
+ elem = jQuery("<div></div>").appendTo("#qunit-fixture");
+
+ deepEqual( elem.css( expectedMany ).css([ "overflow", "width" ]), expectedMany, "Getting multiple element array" );
+ deepEqual( elem.css( expectedSingle ).css([ "width" ]), expectedSingle, "Getting single element array" );
+});
+
if ( !jQuery.support.opacity ) {
test("css(String, Object) for MSIE", function() {
expect( 5 );

0 comments on commit 4b5b6cf

Please sign in to comment.