Added test for css(String, Function) and css(Object) where values are Functions; fixed css(Object)
This commit is contained in:
parent
d857315967
commit
e8eff25f3b
2 changed files with 70 additions and 3 deletions
11
src/css.js
11
src/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);
|
||||
|
||||
|
|
Loading…
Reference in a new issue