Skip to content
Permalink
Browse files

Added test for css(String, Function) and css(Object) where values are…

… Functions; fixed css(Object)
  • Loading branch information
wycats committed Jul 12, 2009
1 parent d857315 commit e8eff25f3b6d9a0c03f6581089406cebcc86aa34
Showing with 70 additions and 3 deletions.
  1. +8 −3 src/css.js
  2. +62 −0 test/unit/css.js
@@ -21,6 +21,13 @@ jQuery.fn.css = function( name, value ) {
options[ name ] = value;
}
}

var isFunction = {};

// For each value, determine whether it's a Function so we don't
// need to determine it again for each element
for ( var prop in options )
isFunction[prop] = jQuery.isFunction( options[prop] );

// For each element...
for ( var i = 0, l = this.length; i < l; i++ ) {
@@ -30,9 +37,7 @@ jQuery.fn.css = function( name, value ) {
for ( var prop in options ) {
value = options[prop];

if ( isFunction ) {
value = value.call( elem, i );
}
if ( isFunction[prop] ) value = value.call( elem, i );

if ( typeof value === "number" && !exclude.test(prop) ) {
value = value + "px";
@@ -81,6 +81,68 @@ test("css(String, Object)", function() {
equals( jQuery("#t2037 .hidden").css("display"), "none", "Make sure browser thinks it is hidden" );
});

test("css(String, Function)", function() {
try {
expect(3);

var colors = ["red", "green", "blue"];

jQuery("<div id='cssFunctionTest'><div class='cssFunction'></div>" +
"<div class='cssFunction'></div>" +
"<div class='cssFunction'></div></div>")
.appendTo("body");

var index = 0;

jQuery("#cssFunctionTest div").css("color", function() {
var color = colors[index];
index++;
return color;
});

index = 0;

jQuery("#cssFunctionTest div").each(function() {
equals( jQuery(this).css("color"), colors[index], "Div #" + index + " should be " + colors[index] );
index++;
});

} finally {
jQuery("#cssFunctionTest").remove();
}
});

test("css(Object) where values are Functions", function() {
try {
expect(3);

var colors = ["red", "green", "blue"];

jQuery("<div id='cssFunctionTest'><div class='cssFunction'></div>" +
"<div class='cssFunction'></div>" +
"<div class='cssFunction'></div></div>")
.appendTo("body");

var index = 0;

jQuery("#cssFunctionTest div").css({color: function() {
var color = colors[index];
index++;
return color;
}});

index = 0;

jQuery("#cssFunctionTest div").each(function() {
equals( jQuery(this).css("color"), colors[index], "Div #" + index + " should be " + colors[index] );
index++;
});

} finally {
jQuery("#cssFunctionTest").remove();
}
});

test("jQuery.css(elem, 'height') doesn't clear radio buttons (bug #1095)", function () {
expect(4);

0 comments on commit e8eff25

Please sign in to comment.
You can’t perform that action at this time.