Merge branch 'setterargs'
This commit is contained in:
commit
d6d5ed4c68
|
@ -12,10 +12,20 @@ jQuery.fn.extend({
|
||||||
return access( this, name, value, true, jQuery.attr );
|
return access( this, name, value, true, jQuery.attr );
|
||||||
},
|
},
|
||||||
|
|
||||||
|
removeAttr: function( name, fn ) {
|
||||||
|
return this.each(function(){
|
||||||
|
jQuery.attr( this, name, "" );
|
||||||
|
if ( this.nodeType === 1 ) {
|
||||||
|
this.removeAttribute( name );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
addClass: function( value ) {
|
addClass: function( value ) {
|
||||||
if ( jQuery.isFunction(value) ) {
|
if ( jQuery.isFunction(value) ) {
|
||||||
return this.each(function() {
|
return this.each(function(i) {
|
||||||
jQuery(this).addClass( value.call(this) );
|
var self = jQuery(this);
|
||||||
|
self.addClass( value.call(this, i, self.attr("class")) );
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,8 +56,9 @@ jQuery.fn.extend({
|
||||||
|
|
||||||
removeClass: function( value ) {
|
removeClass: function( value ) {
|
||||||
if ( jQuery.isFunction(value) ) {
|
if ( jQuery.isFunction(value) ) {
|
||||||
return this.each(function() {
|
return this.each(function(i) {
|
||||||
jQuery(this).removeClass( value.call(this) );
|
var self = jQuery(this);
|
||||||
|
self.removeClass( value.call(this, i, self.attr("class")) );
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,6 +86,41 @@ jQuery.fn.extend({
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
toggleClass: function( value, stateVal ) {
|
||||||
|
var type = typeof value, isBool = typeof stateVal === "boolean";
|
||||||
|
|
||||||
|
if ( jQuery.isFunction( value ) ) {
|
||||||
|
return this.each(function(i) {
|
||||||
|
var self = jQuery(this);
|
||||||
|
self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.each(function() {
|
||||||
|
if ( type === "string" ) {
|
||||||
|
// toggle individual class names
|
||||||
|
var className, i = 0, self = jQuery(this),
|
||||||
|
state = stateVal,
|
||||||
|
classNames = value.split( rspace );
|
||||||
|
|
||||||
|
while ( (className = classNames[ i++ ]) ) {
|
||||||
|
// check each className given, space seperated list
|
||||||
|
state = isBool ? state : !self.hasClass( className );
|
||||||
|
self[ state ? "addClass" : "removeClass" ]( className );
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if ( type === "undefined" || type === "boolean" ) {
|
||||||
|
if ( this.className ) {
|
||||||
|
// store className if set
|
||||||
|
jQuery.data( this, "__className__", this.className );
|
||||||
|
}
|
||||||
|
|
||||||
|
// toggle whole className
|
||||||
|
this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || "";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
hasClass: function( selector ) {
|
hasClass: function( selector ) {
|
||||||
var className = " " + selector + " ";
|
var className = " " + selector + " ";
|
||||||
for ( var i = 0, l = this.length; i < l; i++ ) {
|
for ( var i = 0, l = this.length; i < l; i++ ) {
|
||||||
|
@ -142,30 +188,27 @@ jQuery.fn.extend({
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Typecast once if the value is a number
|
var isFunction = jQuery.isFunction(value);
|
||||||
if ( typeof value === "number" ) {
|
|
||||||
value += "";
|
|
||||||
}
|
|
||||||
|
|
||||||
var val = value;
|
return this.each(function(i) {
|
||||||
|
var self = jQuery(this), val = value;
|
||||||
return this.each(function() {
|
|
||||||
if ( jQuery.isFunction(value) ) {
|
|
||||||
val = value.call(this);
|
|
||||||
|
|
||||||
// Typecast each time if the value is a Function and the appended
|
|
||||||
// value is therefore different each time.
|
|
||||||
if ( typeof val === "number" ) {
|
|
||||||
val += "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( this.nodeType !== 1 ) {
|
if ( this.nodeType !== 1 ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( isFunction ) {
|
||||||
|
val = value.call(this, i, self.val());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Typecast each time if the value is a Function and the appended
|
||||||
|
// value is therefore different each time.
|
||||||
|
if ( typeof val === "number" ) {
|
||||||
|
val += "";
|
||||||
|
}
|
||||||
|
|
||||||
if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
|
if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
|
||||||
this.checked = jQuery.inArray( jQuery(this).val(), val ) >= 0;
|
this.checked = jQuery.inArray( self.val(), val ) >= 0;
|
||||||
|
|
||||||
} else if ( jQuery.nodeName( this, "select" ) ) {
|
} else if ( jQuery.nodeName( this, "select" ) ) {
|
||||||
var values = jQuery.makeArray(val);
|
var values = jQuery.makeArray(val);
|
||||||
|
@ -185,50 +228,6 @@ jQuery.fn.extend({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
jQuery.each({
|
|
||||||
removeAttr: function( name ) {
|
|
||||||
jQuery.attr( this, name, "" );
|
|
||||||
if ( this.nodeType === 1 ) {
|
|
||||||
this.removeAttribute( name );
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
toggleClass: function( classNames, state ) {
|
|
||||||
var type = typeof classNames;
|
|
||||||
|
|
||||||
if ( type === "string" ) {
|
|
||||||
// toggle individual class names
|
|
||||||
var isBool = typeof state === "boolean", className, i = 0,
|
|
||||||
classNames = classNames.split( rspace );
|
|
||||||
|
|
||||||
while ( (className = classNames[ i++ ]) ) {
|
|
||||||
// check each className given, space seperated list
|
|
||||||
state = isBool ? state : !jQuery(this).hasClass( className );
|
|
||||||
jQuery(this)[ state ? "addClass" : "removeClass" ]( className );
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if ( type === "undefined" || type === "boolean" ) {
|
|
||||||
if ( this.className ) {
|
|
||||||
// store className if set
|
|
||||||
jQuery.data( this, "__className__", this.className );
|
|
||||||
}
|
|
||||||
|
|
||||||
// toggle whole className
|
|
||||||
this.className = this.className || classNames === false ? "" : jQuery.data( this, "__className__" ) || "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, function( name, fn ) {
|
|
||||||
jQuery.fn[ name ] = function( val, state ) {
|
|
||||||
if ( jQuery.isFunction( val ) ) {
|
|
||||||
return this.each(function() {
|
|
||||||
jQuery(this)[ name ]( val.call(this), state );
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.each( fn, arguments );
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
jQuery.extend({
|
jQuery.extend({
|
||||||
attrFn: {
|
attrFn: {
|
||||||
val: true,
|
val: true,
|
||||||
|
|
|
@ -775,7 +775,7 @@ function access( elems, key, value, exec, fn, pass ) {
|
||||||
exec = exec && jQuery.isFunction(value);
|
exec = exec && jQuery.isFunction(value);
|
||||||
|
|
||||||
for ( var i = 0; i < length; i++ ) {
|
for ( var i = 0; i < length; i++ ) {
|
||||||
fn( elems[i], key, exec ? value.call( elems[i], i ) : value, pass );
|
fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
|
||||||
}
|
}
|
||||||
|
|
||||||
return elems;
|
return elems;
|
||||||
|
|
|
@ -33,8 +33,9 @@ if ( !jQuery.support.htmlSerialize ) {
|
||||||
jQuery.fn.extend({
|
jQuery.fn.extend({
|
||||||
text: function( text ) {
|
text: function( text ) {
|
||||||
if ( jQuery.isFunction(text) ) {
|
if ( jQuery.isFunction(text) ) {
|
||||||
return this.each(function() {
|
return this.each(function(i) {
|
||||||
return jQuery(this).text( text.call(this) );
|
var self = jQuery(this);
|
||||||
|
return self.text( text.call(this, i, self.text()) );
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,8 +48,8 @@ jQuery.fn.extend({
|
||||||
|
|
||||||
wrapAll: function( html ) {
|
wrapAll: function( html ) {
|
||||||
if ( jQuery.isFunction( html ) ) {
|
if ( jQuery.isFunction( html ) ) {
|
||||||
return this.each(function() {
|
return this.each(function(i) {
|
||||||
jQuery(this).wrapAll( html.apply(this, arguments) );
|
jQuery(this).wrapAll( html.call(this, i) );
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,7 +173,7 @@ jQuery.fn.extend({
|
||||||
|
|
||||||
html: function( value ) {
|
html: function( value ) {
|
||||||
if ( value === undefined ) {
|
if ( value === undefined ) {
|
||||||
return this[0] ?
|
return this[0] && this[0].nodeType === 1 ?
|
||||||
this[0].innerHTML.replace(rinlinejQuery, "") :
|
this[0].innerHTML.replace(rinlinejQuery, "") :
|
||||||
null;
|
null;
|
||||||
|
|
||||||
|
@ -195,6 +196,14 @@ jQuery.fn.extend({
|
||||||
this.empty().append( value );
|
this.empty().append( value );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else if ( jQuery.isFunction( value ) ) {
|
||||||
|
this.each(function(i){
|
||||||
|
var self = jQuery(this), old = self.html();
|
||||||
|
self.empty().append(function(){
|
||||||
|
return value.call( this, i, old );
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
this.empty().append( value );
|
this.empty().append( value );
|
||||||
}
|
}
|
||||||
|
@ -228,9 +237,10 @@ jQuery.fn.extend({
|
||||||
var results, first, value = args[0], scripts = [];
|
var results, first, value = args[0], scripts = [];
|
||||||
|
|
||||||
if ( jQuery.isFunction(value) ) {
|
if ( jQuery.isFunction(value) ) {
|
||||||
return this.each(function() {
|
return this.each(function(i) {
|
||||||
args[0] = value.call(this);
|
var self = jQuery(this);
|
||||||
return jQuery(this).domManip( args, table, callback );
|
args[0] = value.call(this, i, table ? self.html() : undefined);
|
||||||
|
return self.domManip( args, table, callback );
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,8 +7,8 @@ if ( "getBoundingClientRect" in document.documentElement ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( options ) {
|
if ( options ) {
|
||||||
return this.each(function() {
|
return this.each(function( i ) {
|
||||||
jQuery.offset.setOffset( this, options );
|
jQuery.offset.setOffset( this, options, i );
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,8 +33,8 @@ if ( "getBoundingClientRect" in document.documentElement ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( options ) {
|
if ( options ) {
|
||||||
return this.each(function() {
|
return this.each(function( i ) {
|
||||||
jQuery.offset.setOffset( this, options );
|
jQuery.offset.setOffset( this, options, i );
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ jQuery.offset = {
|
||||||
return { top: top, left: left };
|
return { top: top, left: left };
|
||||||
},
|
},
|
||||||
|
|
||||||
setOffset: function( elem, options ) {
|
setOffset: function( elem, options, i ) {
|
||||||
// set position first, in-case top/left are set even on static elem
|
// set position first, in-case top/left are set even on static elem
|
||||||
if ( /static/.test( jQuery.curCSS( elem, "position" ) ) ) {
|
if ( /static/.test( jQuery.curCSS( elem, "position" ) ) ) {
|
||||||
elem.style.position = "relative";
|
elem.style.position = "relative";
|
||||||
|
@ -145,11 +145,16 @@ jQuery.offset = {
|
||||||
var curElem = jQuery( elem ),
|
var curElem = jQuery( elem ),
|
||||||
curOffset = curElem.offset(),
|
curOffset = curElem.offset(),
|
||||||
curTop = parseInt( jQuery.curCSS( elem, "top", true ), 10 ) || 0,
|
curTop = parseInt( jQuery.curCSS( elem, "top", true ), 10 ) || 0,
|
||||||
curLeft = parseInt( jQuery.curCSS( elem, "left", true ), 10) || 0,
|
curLeft = parseInt( jQuery.curCSS( elem, "left", true ), 10 ) || 0;
|
||||||
props = {
|
|
||||||
top: (options.top - curOffset.top) + curTop,
|
if ( jQuery.isFunction( options ) ) {
|
||||||
left: (options.left - curOffset.left) + curLeft
|
options = options.call( elem, i, curOffset );
|
||||||
};
|
}
|
||||||
|
|
||||||
|
var props = {
|
||||||
|
top: (options.top - curOffset.top) + curTop,
|
||||||
|
left: (options.left - curOffset.left) + curLeft
|
||||||
|
};
|
||||||
|
|
||||||
if ( "using" in options ) {
|
if ( "using" in options ) {
|
||||||
options.using.call( elem, props );
|
options.using.call( elem, props );
|
||||||
|
|
|
@ -292,6 +292,148 @@ test("attr('tabindex', value)", function() {
|
||||||
equals(element.attr('tabindex'), -1, 'set negative tabindex');
|
equals(element.attr('tabindex'), -1, 'set negative tabindex');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("removeAttr(String)", function() {
|
||||||
|
expect(1);
|
||||||
|
equals( jQuery('#mark').removeAttr( "class" )[0].className, "", "remove class" );
|
||||||
|
});
|
||||||
|
|
||||||
|
test("val()", function() {
|
||||||
|
expect(17);
|
||||||
|
|
||||||
|
document.getElementById('text1').value = "bla";
|
||||||
|
equals( jQuery("#text1").val(), "bla", "Check for modified value of input element" );
|
||||||
|
|
||||||
|
reset();
|
||||||
|
|
||||||
|
equals( jQuery("#text1").val(), "Test", "Check for value of input element" );
|
||||||
|
// ticket #1714 this caused a JS error in IE
|
||||||
|
equals( jQuery("#first").val(), "", "Check a paragraph element to see if it has a value" );
|
||||||
|
ok( jQuery([]).val() === undefined, "Check an empty jQuery object will return undefined from val" );
|
||||||
|
|
||||||
|
equals( jQuery('#select2').val(), '3', 'Call val() on a single="single" select' );
|
||||||
|
|
||||||
|
same( jQuery('#select3').val(), ['1', '2'], 'Call val() on a multiple="multiple" select' );
|
||||||
|
|
||||||
|
equals( jQuery('#option3c').val(), '2', 'Call val() on a option element with value' );
|
||||||
|
|
||||||
|
equals( jQuery('#option3a').val(), '', 'Call val() on a option element with empty value' );
|
||||||
|
|
||||||
|
equals( jQuery('#option3e').val(), 'no value', 'Call val() on a option element with no value attribute' );
|
||||||
|
|
||||||
|
equals( jQuery('#option3a').val(), '', 'Call val() on a option element with no value attribute' );
|
||||||
|
|
||||||
|
jQuery('#select3').val("");
|
||||||
|
same( jQuery('#select3').val(), [''], 'Call val() on a multiple="multiple" select' );
|
||||||
|
|
||||||
|
var checks = jQuery("<input type='checkbox' name='test' value='1'/>").appendTo("#form")
|
||||||
|
.add( jQuery("<input type='checkbox' name='test' value='2'/>").appendTo("#form") )
|
||||||
|
.add( jQuery("<input type='checkbox' name='test' value=''/>").appendTo("#form") )
|
||||||
|
.add( jQuery("<input type='checkbox' name='test'/>").appendTo("#form") );
|
||||||
|
|
||||||
|
same( checks.serialize(), "", "Get unchecked values." );
|
||||||
|
|
||||||
|
equals( checks.eq(3).val(), "on", "Make sure a value of 'on' is provided if none is specified." );
|
||||||
|
|
||||||
|
checks.val([ "2" ]);
|
||||||
|
same( checks.serialize(), "test=2", "Get a single checked value." );
|
||||||
|
|
||||||
|
checks.val([ "1", "" ]);
|
||||||
|
same( checks.serialize(), "test=1&test=", "Get multiple checked values." );
|
||||||
|
|
||||||
|
checks.val([ "", "2" ]);
|
||||||
|
same( checks.serialize(), "test=2&test=", "Get multiple checked values." );
|
||||||
|
|
||||||
|
checks.val([ "1", "on" ]);
|
||||||
|
same( checks.serialize(), "test=1&test=on", "Get multiple checked values." );
|
||||||
|
|
||||||
|
checks.remove();
|
||||||
|
});
|
||||||
|
|
||||||
|
var testVal = function(valueObj) {
|
||||||
|
expect(6);
|
||||||
|
|
||||||
|
jQuery("#text1").val(valueObj( 'test' ));
|
||||||
|
equals( document.getElementById('text1').value, "test", "Check for modified (via val(String)) value of input element" );
|
||||||
|
|
||||||
|
jQuery("#text1").val(valueObj( 67 ));
|
||||||
|
equals( document.getElementById('text1').value, "67", "Check for modified (via val(Number)) value of input element" );
|
||||||
|
|
||||||
|
jQuery("#select1").val(valueObj( "3" ));
|
||||||
|
equals( jQuery("#select1").val(), "3", "Check for modified (via val(String)) value of select element" );
|
||||||
|
|
||||||
|
jQuery("#select1").val(valueObj( 2 ));
|
||||||
|
equals( jQuery("#select1").val(), "2", "Check for modified (via val(Number)) value of select element" );
|
||||||
|
|
||||||
|
jQuery("#select1").append("<option value='4'>four</option>");
|
||||||
|
jQuery("#select1").val(valueObj( 4 ));
|
||||||
|
equals( jQuery("#select1").val(), "4", "Should be possible to set the val() to a newly created option" );
|
||||||
|
|
||||||
|
// using contents will get comments regular, text, and comment nodes
|
||||||
|
var j = jQuery("#nonnodes").contents();
|
||||||
|
j.val(valueObj( "asdf" ));
|
||||||
|
equals( j.val(), "asdf", "Check node,textnode,comment with val()" );
|
||||||
|
j.removeAttr("value");
|
||||||
|
}
|
||||||
|
|
||||||
|
test("val(String/Number)", function() {
|
||||||
|
testVal(bareObj);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("val(Function)", function() {
|
||||||
|
testVal(functionReturningObj);
|
||||||
|
})
|
||||||
|
|
||||||
|
test("val(Function) with incoming value", function() {
|
||||||
|
expect(10);
|
||||||
|
|
||||||
|
var oldVal = jQuery("#text1").val();
|
||||||
|
|
||||||
|
jQuery("#text1").val(function(i, val) {
|
||||||
|
equals( val, oldVal, "Make sure the incoming value is correct." );
|
||||||
|
return "test";
|
||||||
|
});
|
||||||
|
|
||||||
|
equals( document.getElementById('text1').value, "test", "Check for modified (via val(String)) value of input element" );
|
||||||
|
|
||||||
|
oldVal = jQuery("#text1").val();
|
||||||
|
|
||||||
|
jQuery("#text1").val(function(i, val) {
|
||||||
|
equals( val, oldVal, "Make sure the incoming value is correct." );
|
||||||
|
return 67;
|
||||||
|
});
|
||||||
|
|
||||||
|
equals( document.getElementById('text1').value, "67", "Check for modified (via val(Number)) value of input element" );
|
||||||
|
|
||||||
|
oldVal = jQuery("#select1").val();
|
||||||
|
|
||||||
|
jQuery("#select1").val(function(i, val) {
|
||||||
|
equals( val, oldVal, "Make sure the incoming value is correct." );
|
||||||
|
return "3";
|
||||||
|
});
|
||||||
|
|
||||||
|
equals( jQuery("#select1").val(), "3", "Check for modified (via val(String)) value of select element" );
|
||||||
|
|
||||||
|
oldVal = jQuery("#select1").val();
|
||||||
|
|
||||||
|
jQuery("#select1").val(function(i, val) {
|
||||||
|
equals( val, oldVal, "Make sure the incoming value is correct." );
|
||||||
|
return 2;
|
||||||
|
});
|
||||||
|
|
||||||
|
equals( jQuery("#select1").val(), "2", "Check for modified (via val(Number)) value of select element" );
|
||||||
|
|
||||||
|
jQuery("#select1").append("<option value='4'>four</option>");
|
||||||
|
|
||||||
|
oldVal = jQuery("#select1").val();
|
||||||
|
|
||||||
|
jQuery("#select1").val(function(i, val) {
|
||||||
|
equals( val, oldVal, "Make sure the incoming value is correct." );
|
||||||
|
return 4;
|
||||||
|
});
|
||||||
|
|
||||||
|
equals( jQuery("#select1").val(), "4", "Should be possible to set the val() to a newly created option" );
|
||||||
|
});
|
||||||
|
|
||||||
var testAddClass = function(valueObj) {
|
var testAddClass = function(valueObj) {
|
||||||
expect(2);
|
expect(2);
|
||||||
var div = jQuery("div");
|
var div = jQuery("div");
|
||||||
|
@ -316,6 +458,25 @@ test("addClass(Function)", function() {
|
||||||
testAddClass(functionReturningObj);
|
testAddClass(functionReturningObj);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("addClass(Function) with incoming value", function() {
|
||||||
|
expect(39);
|
||||||
|
|
||||||
|
var div = jQuery("div"), old = div.map(function(){
|
||||||
|
return jQuery(this).attr("class");
|
||||||
|
});
|
||||||
|
|
||||||
|
div.addClass(function(i, val) {
|
||||||
|
equals( val, old[i], "Make sure the incoming value is correct." );
|
||||||
|
return "test";
|
||||||
|
});
|
||||||
|
|
||||||
|
var pass = true;
|
||||||
|
for ( var i = 0; i < div.size(); i++ ) {
|
||||||
|
if ( div.get(i).className.indexOf("test") == -1 ) pass = false;
|
||||||
|
}
|
||||||
|
ok( pass, "Add Class" );
|
||||||
|
});
|
||||||
|
|
||||||
var testRemoveClass = function(valueObj) {
|
var testRemoveClass = function(valueObj) {
|
||||||
expect(5);
|
expect(5);
|
||||||
|
|
||||||
|
@ -357,6 +518,23 @@ test("removeClass(Function) - simple", function() {
|
||||||
testRemoveClass(functionReturningObj);
|
testRemoveClass(functionReturningObj);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("removeClass(Function) with incoming value", function() {
|
||||||
|
expect(39);
|
||||||
|
|
||||||
|
var $divs = jQuery('div').addClass("test"), old = $divs.map(function(){
|
||||||
|
return jQuery(this).attr("class");
|
||||||
|
});
|
||||||
|
|
||||||
|
$divs.removeClass(function(i, val) {
|
||||||
|
equals( val, old[i], "Make sure the incoming value is correct." );
|
||||||
|
return "test";
|
||||||
|
});
|
||||||
|
|
||||||
|
ok( !$divs.is('.test'), "Remove Class" );
|
||||||
|
|
||||||
|
reset();
|
||||||
|
});
|
||||||
|
|
||||||
var testToggleClass = function(valueObj) {
|
var testToggleClass = function(valueObj) {
|
||||||
expect(17);
|
expect(17);
|
||||||
|
|
||||||
|
@ -417,17 +595,57 @@ test("toggleClass(Function[, boolean])", function() {
|
||||||
testToggleClass(functionReturningObj);
|
testToggleClass(functionReturningObj);
|
||||||
});
|
});
|
||||||
|
|
||||||
var testRemoveAttr = function(valueObj) {
|
test("toggleClass(Fucntion[, boolean]) with incoming value", function() {
|
||||||
expect(1);
|
expect(14);
|
||||||
equals( jQuery('#mark').removeAttr( valueObj("class") )[0].className, "", "remove class" );
|
|
||||||
};
|
|
||||||
|
|
||||||
test("removeAttr(String)", function() {
|
var e = jQuery("#firstp"), old = e.attr("class");
|
||||||
testRemoveAttr(bareObj);
|
ok( !e.is(".test"), "Assert class not present" );
|
||||||
});
|
|
||||||
|
e.toggleClass(function(i, val) {
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
return "test";
|
||||||
|
});
|
||||||
|
ok( e.is(".test"), "Assert class present" );
|
||||||
|
|
||||||
|
old = e.attr("class");
|
||||||
|
|
||||||
|
e.toggleClass(function(i, val) {
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
return "test";
|
||||||
|
});
|
||||||
|
ok( !e.is(".test"), "Assert class not present" );
|
||||||
|
|
||||||
|
old = e.attr("class");
|
||||||
|
|
||||||
test("removeAttr(Function)", function() {
|
// class name with a boolean
|
||||||
testRemoveAttr(functionReturningObj);
|
e.toggleClass(function(i, val, state) {
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
equals( state, false, "Make sure that the state is passed in." );
|
||||||
|
return "test";
|
||||||
|
}, false );
|
||||||
|
ok( !e.is(".test"), "Assert class not present" );
|
||||||
|
|
||||||
|
old = e.attr("class");
|
||||||
|
|
||||||
|
e.toggleClass(function(i, val, state) {
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
equals( state, true, "Make sure that the state is passed in." );
|
||||||
|
return "test";
|
||||||
|
}, true );
|
||||||
|
ok( e.is(".test"), "Assert class present" );
|
||||||
|
|
||||||
|
old = e.attr("class");
|
||||||
|
|
||||||
|
e.toggleClass(function(i, val, state) {
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
equals( state, false, "Make sure that the state is passed in." );
|
||||||
|
return "test";
|
||||||
|
}, false );
|
||||||
|
ok( !e.is(".test"), "Assert class not present" );
|
||||||
|
|
||||||
|
// Cleanup
|
||||||
|
e.removeClass("test");
|
||||||
|
e.removeData('__className__');
|
||||||
});
|
});
|
||||||
|
|
||||||
test("addClass, removeClass, hasClass", function() {
|
test("addClass, removeClass, hasClass", function() {
|
||||||
|
|
146
test/unit/css.js
146
test/unit/css.js
|
@ -120,69 +120,123 @@ if(jQuery.browser.msie) {
|
||||||
}
|
}
|
||||||
|
|
||||||
test("css(String, Function)", function() {
|
test("css(String, Function)", function() {
|
||||||
try {
|
expect(3);
|
||||||
expect(3);
|
|
||||||
|
|
||||||
var sizes = ["10px", "20px", "30px"];
|
var sizes = ["10px", "20px", "30px"];
|
||||||
|
|
||||||
jQuery("<div id='cssFunctionTest'><div class='cssFunction'></div>" +
|
jQuery("<div id='cssFunctionTest'><div class='cssFunction'></div>" +
|
||||||
"<div class='cssFunction'></div>" +
|
"<div class='cssFunction'></div>" +
|
||||||
"<div class='cssFunction'></div></div>")
|
"<div class='cssFunction'></div></div>")
|
||||||
.appendTo("body");
|
.appendTo("body");
|
||||||
|
|
||||||
var index = 0;
|
var index = 0;
|
||||||
|
|
||||||
jQuery("#cssFunctionTest div").css("font-size", function() {
|
jQuery("#cssFunctionTest div").css("font-size", function() {
|
||||||
var size = sizes[index];
|
var size = sizes[index];
|
||||||
index++;
|
index++;
|
||||||
return size;
|
return size;
|
||||||
});
|
});
|
||||||
|
|
||||||
index = 0;
|
index = 0;
|
||||||
|
|
||||||
|
jQuery("#cssFunctionTest div").each(function() {
|
||||||
|
var computedSize = jQuery(this).css("font-size")
|
||||||
|
var expectedSize = sizes[index]
|
||||||
|
equals( computedSize, expectedSize, "Div #" + index + " should be " + expectedSize );
|
||||||
|
index++;
|
||||||
|
});
|
||||||
|
|
||||||
|
jQuery("#cssFunctionTest").remove();
|
||||||
|
});
|
||||||
|
|
||||||
|
test("css(String, Function) with incoming value", function() {
|
||||||
|
expect(3);
|
||||||
|
|
||||||
jQuery("#cssFunctionTest div").each(function() {
|
var sizes = ["10px", "20px", "30px"];
|
||||||
var computedSize = jQuery(this).css("font-size")
|
|
||||||
var expectedSize = sizes[index]
|
jQuery("<div id='cssFunctionTest'><div class='cssFunction'></div>" +
|
||||||
equals( computedSize, expectedSize, "Div #" + index + " should be " + expectedSize );
|
"<div class='cssFunction'></div>" +
|
||||||
index++;
|
"<div class='cssFunction'></div></div>")
|
||||||
});
|
.appendTo("body");
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
|
||||||
|
jQuery("#cssFunctionTest div").css("font-size", function() {
|
||||||
|
var size = sizes[index];
|
||||||
|
index++;
|
||||||
|
return size;
|
||||||
|
});
|
||||||
|
|
||||||
} finally {
|
index = 0;
|
||||||
jQuery("#cssFunctionTest").remove();
|
|
||||||
}
|
jQuery("#cssFunctionTest div").css("font-size", function(i, computedSize) {
|
||||||
|
var expectedSize = sizes[index]
|
||||||
|
equals( computedSize, expectedSize, "Div #" + index + " should be " + expectedSize );
|
||||||
|
index++;
|
||||||
|
return computedSize;
|
||||||
|
});
|
||||||
|
|
||||||
|
jQuery("#cssFunctionTest").remove();
|
||||||
});
|
});
|
||||||
|
|
||||||
test("css(Object) where values are Functions", function() {
|
test("css(Object) where values are Functions", function() {
|
||||||
try {
|
expect(3);
|
||||||
expect(3);
|
|
||||||
|
|
||||||
var sizes = ["10px", "20px", "30px"];
|
var sizes = ["10px", "20px", "30px"];
|
||||||
|
|
||||||
jQuery("<div id='cssFunctionTest'><div class='cssFunction'></div>" +
|
jQuery("<div id='cssFunctionTest'><div class='cssFunction'></div>" +
|
||||||
"<div class='cssFunction'></div>" +
|
"<div class='cssFunction'></div>" +
|
||||||
"<div class='cssFunction'></div></div>")
|
"<div class='cssFunction'></div></div>")
|
||||||
.appendTo("body");
|
.appendTo("body");
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
|
||||||
var index = 0;
|
jQuery("#cssFunctionTest div").css({fontSize: function() {
|
||||||
|
var size = sizes[index];
|
||||||
|
index++;
|
||||||
|
return size;
|
||||||
|
}});
|
||||||
|
|
||||||
|
index = 0;
|
||||||
|
|
||||||
|
jQuery("#cssFunctionTest div").each(function() {
|
||||||
|
var computedSize = jQuery(this).css("font-size")
|
||||||
|
var expectedSize = sizes[index]
|
||||||
|
equals( computedSize, expectedSize, "Div #" + index + " should be " + expectedSize );
|
||||||
|
index++;
|
||||||
|
});
|
||||||
|
|
||||||
|
jQuery("#cssFunctionTest").remove();
|
||||||
|
});
|
||||||
|
|
||||||
|
test("css(Object) where values are Functions with incoming values", function() {
|
||||||
|
expect(3);
|
||||||
|
|
||||||
|
var sizes = ["10px", "20px", "30px"];
|
||||||
|
|
||||||
jQuery("#cssFunctionTest div").css({fontSize: function() {
|
jQuery("<div id='cssFunctionTest'><div class='cssFunction'></div>" +
|
||||||
var size = sizes[index];
|
"<div class='cssFunction'></div>" +
|
||||||
index++;
|
"<div class='cssFunction'></div></div>")
|
||||||
return size;
|
.appendTo("body");
|
||||||
}});
|
|
||||||
|
var index = 0;
|
||||||
|
|
||||||
|
jQuery("#cssFunctionTest div").css({fontSize: function() {
|
||||||
|
var size = sizes[index];
|
||||||
|
index++;
|
||||||
|
return size;
|
||||||
|
}});
|
||||||
|
|
||||||
index = 0;
|
index = 0;
|
||||||
|
|
||||||
jQuery("#cssFunctionTest div").each(function() {
|
jQuery("#cssFunctionTest div").css({"font-size": function(i, computedSize) {
|
||||||
var computedSize = jQuery(this).css("font-size")
|
var expectedSize = sizes[index]
|
||||||
var expectedSize = sizes[index]
|
equals( computedSize, expectedSize, "Div #" + index + " should be " + expectedSize );
|
||||||
equals( computedSize, expectedSize, "Div #" + index + " should be " + expectedSize );
|
index++;
|
||||||
index++;
|
return computedSize;
|
||||||
});
|
}});
|
||||||
|
|
||||||
} finally {
|
jQuery("#cssFunctionTest").remove();
|
||||||
jQuery("#cssFunctionTest").remove();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("jQuery.css(elem, 'height') doesn't clear radio buttons (bug #1095)", function () {
|
test("jQuery.css(elem, 'height') doesn't clear radio buttons (bug #1095)", function () {
|
||||||
|
|
|
@ -12,6 +12,42 @@ test("text()", function() {
|
||||||
equals( jQuery(document.createTextNode("foo")).text(), "foo", "Text node was retreived from .text()." );
|
equals( jQuery(document.createTextNode("foo")).text(), "foo", "Text node was retreived from .text()." );
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var testText = function(valueObj) {
|
||||||
|
expect(4);
|
||||||
|
var val = valueObj("<div><b>Hello</b> cruel world!</div>");
|
||||||
|
equals( jQuery("#foo").text(val)[0].innerHTML.replace(/>/g, ">"), "<div><b>Hello</b> cruel world!</div>", "Check escaped text" );
|
||||||
|
|
||||||
|
// using contents will get comments regular, text, and comment nodes
|
||||||
|
var j = jQuery("#nonnodes").contents();
|
||||||
|
j.text(valueObj("hi!"));
|
||||||
|
equals( jQuery(j[0]).text(), "hi!", "Check node,textnode,comment with text()" );
|
||||||
|
equals( j[1].nodeValue, " there ", "Check node,textnode,comment with text()" );
|
||||||
|
equals( j[2].nodeType, 8, "Check node,textnode,comment with text()" );
|
||||||
|
}
|
||||||
|
|
||||||
|
test("text(String)", function() {
|
||||||
|
testText(bareObj)
|
||||||
|
});
|
||||||
|
|
||||||
|
test("text(Function)", function() {
|
||||||
|
testText(functionReturningObj);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("text(Function) with incoming value", function() {
|
||||||
|
expect(2);
|
||||||
|
|
||||||
|
var old = "This link has class=\"blog\": Simon Willison's Weblog";
|
||||||
|
|
||||||
|
jQuery('#sap').text(function(i, val) {
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
return "foobar";
|
||||||
|
});
|
||||||
|
|
||||||
|
equals( jQuery("#sap").text(), "foobar", 'Check for merged text of more then one element.' );
|
||||||
|
|
||||||
|
reset();
|
||||||
|
});
|
||||||
|
|
||||||
var testWrap = function(val) {
|
var testWrap = function(val) {
|
||||||
expect(18);
|
expect(18);
|
||||||
var defaultText = 'Try them out:'
|
var defaultText = 'Try them out:'
|
||||||
|
@ -133,7 +169,7 @@ test("wrapInner(String|Element)", function() {
|
||||||
// testWrapInner(functionReturningObj)
|
// testWrapInner(functionReturningObj)
|
||||||
// })
|
// })
|
||||||
|
|
||||||
var testUnwrap = function() {
|
test("unwrap()", function() {
|
||||||
expect(9);
|
expect(9);
|
||||||
|
|
||||||
jQuery("body").append(' <div id="unwrap" style="display: none;"> <div id="unwrap1"> <span class="unwrap">a</span> <span class="unwrap">b</span> </div> <div id="unwrap2"> <span class="unwrap">c</span> <span class="unwrap">d</span> </div> <div id="unwrap3"> <b><span class="unwrap unwrap3">e</span></b> <b><span class="unwrap unwrap3">f</span></b> </div> </div>');
|
jQuery("body").append(' <div id="unwrap" style="display: none;"> <div id="unwrap1"> <span class="unwrap">a</span> <span class="unwrap">b</span> </div> <div id="unwrap2"> <span class="unwrap">c</span> <span class="unwrap">d</span> </div> <div id="unwrap3"> <b><span class="unwrap unwrap3">e</span></b> <b><span class="unwrap unwrap3">f</span></b> </div> </div>');
|
||||||
|
@ -158,10 +194,6 @@ var testUnwrap = function() {
|
||||||
same( jQuery('body > span.unwrap').get(), abcdef, 'body contains 6 .unwrap child spans' );
|
same( jQuery('body > span.unwrap').get(), abcdef, 'body contains 6 .unwrap child spans' );
|
||||||
|
|
||||||
jQuery('body > span.unwrap').remove();
|
jQuery('body > span.unwrap').remove();
|
||||||
}
|
|
||||||
|
|
||||||
test("unwrap()", function() {
|
|
||||||
testUnwrap();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var testAppend = function(valueObj) {
|
var testAppend = function(valueObj) {
|
||||||
|
@ -256,7 +288,68 @@ test("append(String|Element|Array<Element>|jQuery)", function() {
|
||||||
|
|
||||||
test("append(Function)", function() {
|
test("append(Function)", function() {
|
||||||
testAppend(functionReturningObj);
|
testAppend(functionReturningObj);
|
||||||
})
|
});
|
||||||
|
|
||||||
|
test("append(Function) with incoming value", function() {
|
||||||
|
expect(12);
|
||||||
|
|
||||||
|
var defaultText = 'Try them out:', old = jQuery("#first").html();
|
||||||
|
|
||||||
|
var result = jQuery('#first').append(function(i, val){
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
return '<b>buga</b>';
|
||||||
|
});
|
||||||
|
equals( result.text(), defaultText + 'buga', 'Check if text appending works' );
|
||||||
|
|
||||||
|
var select = jQuery('#select3');
|
||||||
|
old = select.html();
|
||||||
|
|
||||||
|
equals( select.append(function(i, val){
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
return '<option value="appendTest">Append Test</option>';
|
||||||
|
}).find('option:last-child').attr('value'), 'appendTest', 'Appending html options to select element');
|
||||||
|
|
||||||
|
reset();
|
||||||
|
var expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:";
|
||||||
|
old = jQuery("#sap").html();
|
||||||
|
|
||||||
|
jQuery('#sap').append(function(i, val){
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
return document.getElementById('first');
|
||||||
|
});
|
||||||
|
equals( expected, jQuery('#sap').text(), "Check for appending of element" );
|
||||||
|
|
||||||
|
reset();
|
||||||
|
expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:Yahoo";
|
||||||
|
old = jQuery("#sap").html();
|
||||||
|
|
||||||
|
jQuery('#sap').append(function(i, val){
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
return [document.getElementById('first'), document.getElementById('yahoo')];
|
||||||
|
});
|
||||||
|
equals( expected, jQuery('#sap').text(), "Check for appending of array of elements" );
|
||||||
|
|
||||||
|
reset();
|
||||||
|
expected = "This link has class=\"blog\": Simon Willison's WeblogYahooTry them out:";
|
||||||
|
old = jQuery("#sap").html();
|
||||||
|
|
||||||
|
jQuery('#sap').append(function(i, val){
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
return jQuery("#first, #yahoo");
|
||||||
|
});
|
||||||
|
equals( expected, jQuery('#sap').text(), "Check for appending of jQuery object" );
|
||||||
|
|
||||||
|
reset();
|
||||||
|
old = jQuery("#sap").html();
|
||||||
|
|
||||||
|
jQuery("#sap").append(function(i, val){
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
return 5;
|
||||||
|
});
|
||||||
|
ok( jQuery("#sap")[0].innerHTML.match( /5$/ ), "Check for appending a number" );
|
||||||
|
|
||||||
|
reset();
|
||||||
|
});
|
||||||
|
|
||||||
test("appendTo(String|Element|Array<Element>|jQuery)", function() {
|
test("appendTo(String|Element|Array<Element>|jQuery)", function() {
|
||||||
expect(12);
|
expect(12);
|
||||||
|
@ -330,7 +423,7 @@ var testPrepend = function(val) {
|
||||||
expected = "YahooTry them out:This link has class=\"blog\": Simon Willison's Weblog";
|
expected = "YahooTry them out:This link has class=\"blog\": Simon Willison's Weblog";
|
||||||
jQuery('#sap').prepend(val( jQuery("#first, #yahoo") ));
|
jQuery('#sap').prepend(val( jQuery("#first, #yahoo") ));
|
||||||
equals( expected, jQuery('#sap').text(), "Check for prepending of jQuery object" );
|
equals( expected, jQuery('#sap').text(), "Check for prepending of jQuery object" );
|
||||||
}
|
};
|
||||||
|
|
||||||
test("prepend(String|Element|Array<Element>|jQuery)", function() {
|
test("prepend(String|Element|Array<Element>|jQuery)", function() {
|
||||||
testPrepend(bareObj);
|
testPrepend(bareObj);
|
||||||
|
@ -338,7 +431,58 @@ test("prepend(String|Element|Array<Element>|jQuery)", function() {
|
||||||
|
|
||||||
test("prepend(Function)", function() {
|
test("prepend(Function)", function() {
|
||||||
testPrepend(functionReturningObj);
|
testPrepend(functionReturningObj);
|
||||||
})
|
});
|
||||||
|
|
||||||
|
test("prepend(Function) with incoming value", function() {
|
||||||
|
expect(10);
|
||||||
|
|
||||||
|
var defaultText = 'Try them out:', old = jQuery('#first').html();
|
||||||
|
var result = jQuery('#first').prepend(function(i, val) {
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
return '<b>buga</b>';
|
||||||
|
});
|
||||||
|
equals( result.text(), 'buga' + defaultText, 'Check if text prepending works' );
|
||||||
|
|
||||||
|
old = jQuery("#select3").html();
|
||||||
|
|
||||||
|
equals( jQuery('#select3').prepend(function(i, val) {
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
return '<option value="prependTest">Prepend Test</option>';
|
||||||
|
}).find('option:first-child').attr('value'), 'prependTest', 'Prepending html options to select element');
|
||||||
|
|
||||||
|
reset();
|
||||||
|
var expected = "Try them out:This link has class=\"blog\": Simon Willison's Weblog";
|
||||||
|
old = jQuery('#sap').html();
|
||||||
|
|
||||||
|
jQuery('#sap').prepend(function(i, val) {
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
return document.getElementById('first');
|
||||||
|
});
|
||||||
|
|
||||||
|
equals( expected, jQuery('#sap').text(), "Check for prepending of element" );
|
||||||
|
|
||||||
|
reset();
|
||||||
|
expected = "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog";
|
||||||
|
old = jQuery('#sap').html();
|
||||||
|
|
||||||
|
jQuery('#sap').prepend(function(i, val) {
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
return [document.getElementById('first'), document.getElementById('yahoo')];
|
||||||
|
});
|
||||||
|
|
||||||
|
equals( expected, jQuery('#sap').text(), "Check for prepending of array of elements" );
|
||||||
|
|
||||||
|
reset();
|
||||||
|
expected = "YahooTry them out:This link has class=\"blog\": Simon Willison's Weblog";
|
||||||
|
old = jQuery('#sap').html();
|
||||||
|
|
||||||
|
jQuery('#sap').prepend(function(i, val) {
|
||||||
|
equals( val, old, "Make sure the incoming value is correct." );
|
||||||
|
return jQuery("#first, #yahoo");
|
||||||
|
});
|
||||||
|
|
||||||
|
equals( expected, jQuery('#sap').text(), "Check for prepending of jQuery object" );
|
||||||
|
});
|
||||||
|
|
||||||
test("prependTo(String|Element|Array<Element>|jQuery)", function() {
|
test("prependTo(String|Element|Array<Element>|jQuery)", function() {
|
||||||
expect(6);
|
expect(6);
|
||||||
|
@ -618,92 +762,6 @@ test("clone() on XML nodes", function() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
test("val()", function() {
|
|
||||||
expect(17);
|
|
||||||
|
|
||||||
document.getElementById('text1').value = "bla";
|
|
||||||
equals( jQuery("#text1").val(), "bla", "Check for modified value of input element" );
|
|
||||||
|
|
||||||
reset();
|
|
||||||
|
|
||||||
equals( jQuery("#text1").val(), "Test", "Check for value of input element" );
|
|
||||||
// ticket #1714 this caused a JS error in IE
|
|
||||||
equals( jQuery("#first").val(), "", "Check a paragraph element to see if it has a value" );
|
|
||||||
ok( jQuery([]).val() === undefined, "Check an empty jQuery object will return undefined from val" );
|
|
||||||
|
|
||||||
equals( jQuery('#select2').val(), '3', 'Call val() on a single="single" select' );
|
|
||||||
|
|
||||||
same( jQuery('#select3').val(), ['1', '2'], 'Call val() on a multiple="multiple" select' );
|
|
||||||
|
|
||||||
equals( jQuery('#option3c').val(), '2', 'Call val() on a option element with value' );
|
|
||||||
|
|
||||||
equals( jQuery('#option3a').val(), '', 'Call val() on a option element with empty value' );
|
|
||||||
|
|
||||||
equals( jQuery('#option3e').val(), 'no value', 'Call val() on a option element with no value attribute' );
|
|
||||||
|
|
||||||
equals( jQuery('#option3a').val(), '', 'Call val() on a option element with no value attribute' );
|
|
||||||
|
|
||||||
jQuery('#select3').val("");
|
|
||||||
same( jQuery('#select3').val(), [''], 'Call val() on a multiple="multiple" select' );
|
|
||||||
|
|
||||||
var checks = jQuery("<input type='checkbox' name='test' value='1'/>").appendTo("#form")
|
|
||||||
.add( jQuery("<input type='checkbox' name='test' value='2'/>").appendTo("#form") )
|
|
||||||
.add( jQuery("<input type='checkbox' name='test' value=''/>").appendTo("#form") )
|
|
||||||
.add( jQuery("<input type='checkbox' name='test'/>").appendTo("#form") );
|
|
||||||
|
|
||||||
same( checks.serialize(), "", "Get unchecked values." );
|
|
||||||
|
|
||||||
equals( checks.eq(3).val(), "on", "Make sure a value of 'on' is provided if none is specified." );
|
|
||||||
|
|
||||||
checks.val([ "2" ]);
|
|
||||||
same( checks.serialize(), "test=2", "Get a single checked value." );
|
|
||||||
|
|
||||||
checks.val([ "1", "" ]);
|
|
||||||
same( checks.serialize(), "test=1&test=", "Get multiple checked values." );
|
|
||||||
|
|
||||||
checks.val([ "", "2" ]);
|
|
||||||
same( checks.serialize(), "test=2&test=", "Get multiple checked values." );
|
|
||||||
|
|
||||||
checks.val([ "1", "on" ]);
|
|
||||||
same( checks.serialize(), "test=1&test=on", "Get multiple checked values." );
|
|
||||||
|
|
||||||
checks.remove();
|
|
||||||
});
|
|
||||||
|
|
||||||
var testVal = function(valueObj) {
|
|
||||||
expect(6);
|
|
||||||
|
|
||||||
jQuery("#text1").val(valueObj( 'test' ));
|
|
||||||
equals( document.getElementById('text1').value, "test", "Check for modified (via val(String)) value of input element" );
|
|
||||||
|
|
||||||
jQuery("#text1").val(valueObj( 67 ));
|
|
||||||
equals( document.getElementById('text1').value, "67", "Check for modified (via val(Number)) value of input element" );
|
|
||||||
|
|
||||||
jQuery("#select1").val(valueObj( "3" ));
|
|
||||||
equals( jQuery("#select1").val(), "3", "Check for modified (via val(String)) value of select element" );
|
|
||||||
|
|
||||||
jQuery("#select1").val(valueObj( 2 ));
|
|
||||||
equals( jQuery("#select1").val(), "2", "Check for modified (via val(Number)) value of select element" );
|
|
||||||
|
|
||||||
jQuery("#select1").append("<option value='4'>four</option>");
|
|
||||||
jQuery("#select1").val(valueObj( 4 ));
|
|
||||||
equals( jQuery("#select1").val(), "4", "Should be possible to set the val() to a newly created option" );
|
|
||||||
|
|
||||||
// using contents will get comments regular, text, and comment nodes
|
|
||||||
var j = jQuery("#nonnodes").contents();
|
|
||||||
j.val(valueObj( "asdf" ));
|
|
||||||
equals( j.val(), "asdf", "Check node,textnode,comment with val()" );
|
|
||||||
j.removeAttr("value");
|
|
||||||
}
|
|
||||||
|
|
||||||
test("val(String/Number)", function() {
|
|
||||||
testVal(bareObj);
|
|
||||||
});
|
|
||||||
|
|
||||||
test("val(Function)", function() {
|
|
||||||
testVal(functionReturningObj);
|
|
||||||
})
|
|
||||||
|
|
||||||
var testHtml = function(valueObj) {
|
var testHtml = function(valueObj) {
|
||||||
expect(22);
|
expect(22);
|
||||||
|
|
||||||
|
@ -768,27 +826,66 @@ test("html(Function)", function() {
|
||||||
testHtml(functionReturningObj);
|
testHtml(functionReturningObj);
|
||||||
});
|
});
|
||||||
|
|
||||||
var testText = function(valueObj) {
|
test("html(Function) with incoming value", function() {
|
||||||
expect(4);
|
expect(20);
|
||||||
var val = valueObj("<div><b>Hello</b> cruel world!</div>");
|
|
||||||
equals( jQuery("#foo").text(val)[0].innerHTML.replace(/>/g, ">"), "<div><b>Hello</b> cruel world!</div>", "Check escaped text" );
|
var div = jQuery("#main > div"), old = div.map(function(){ return jQuery(this).html() });
|
||||||
|
|
||||||
|
div.html(function(i, val) {
|
||||||
|
equals( val, old[i], "Make sure the incoming value is correct." );
|
||||||
|
return "<b>test</b>";
|
||||||
|
});
|
||||||
|
|
||||||
|
var pass = true;
|
||||||
|
div.each(function(){
|
||||||
|
if ( this.childNodes.length !== 1 ) {
|
||||||
|
pass = false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
ok( pass, "Set HTML" );
|
||||||
|
|
||||||
|
reset();
|
||||||
// using contents will get comments regular, text, and comment nodes
|
// using contents will get comments regular, text, and comment nodes
|
||||||
var j = jQuery("#nonnodes").contents();
|
var j = jQuery("#nonnodes").contents();
|
||||||
j.text(valueObj("hi!"));
|
old = j.map(function(){ return jQuery(this).html(); });
|
||||||
equals( jQuery(j[0]).text(), "hi!", "Check node,textnode,comment with text()" );
|
|
||||||
equals( j[1].nodeValue, " there ", "Check node,textnode,comment with text()" );
|
j.html(function(i, val) {
|
||||||
equals( j[2].nodeType, 8, "Check node,textnode,comment with text()" );
|
equals( val, old[i], "Make sure the incoming value is correct." );
|
||||||
}
|
return "<b>bold</b>";
|
||||||
|
});
|
||||||
|
|
||||||
|
j.find('b').removeData();
|
||||||
|
equals( j.html().replace(/ xmlns="[^"]+"/g, "").toLowerCase(), "<b>bold</b>", "Check node,textnode,comment with html()" );
|
||||||
|
|
||||||
|
var $div = jQuery('<div />');
|
||||||
|
|
||||||
|
equals( $div.html(function(i, val) {
|
||||||
|
equals( val, "", "Make sure the incoming value is correct." );
|
||||||
|
return 5;
|
||||||
|
}).html(), '5', 'Setting a number as html' );
|
||||||
|
|
||||||
|
equals( $div.html(function(i, val) {
|
||||||
|
equals( val, "5", "Make sure the incoming value is correct." );
|
||||||
|
return 0;
|
||||||
|
}).html(), '0', 'Setting a zero as html' );
|
||||||
|
|
||||||
test("text(String)", function() {
|
var $div2 = jQuery('<div/>'), insert = "<div>hello1</div>";
|
||||||
testText(bareObj)
|
equals( $div2.html(function(i, val) {
|
||||||
|
equals( val, "", "Make sure the incoming value is correct." );
|
||||||
|
return insert;
|
||||||
|
}).html(), insert, "Verify escaped insertion." );
|
||||||
|
|
||||||
|
equals( $div2.html(function(i, val) {
|
||||||
|
equals( val, insert, "Make sure the incoming value is correct." );
|
||||||
|
return "x" + insert;
|
||||||
|
}).html(), "x" + insert, "Verify escaped insertion." );
|
||||||
|
|
||||||
|
equals( $div2.html(function(i, val) {
|
||||||
|
equals( val, "x" + insert, "Make sure the incoming value is correct." );
|
||||||
|
return " " + insert;
|
||||||
|
}).html(), " " + insert, "Verify escaped insertion." );
|
||||||
});
|
});
|
||||||
|
|
||||||
test("text(Function)", function() {
|
|
||||||
testText(functionReturningObj);
|
|
||||||
})
|
|
||||||
|
|
||||||
var testRemove = function(method) {
|
var testRemove = function(method) {
|
||||||
expect(9);
|
expect(9);
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
module("offset");
|
module("offset");
|
||||||
|
|
||||||
testoffset("absolute", function( jQuery ) {
|
testoffset("absolute", function( jQuery ) {
|
||||||
|
expect(144);
|
||||||
|
|
||||||
// get offset tests
|
// get offset tests
|
||||||
var tests = [
|
var tests = [
|
||||||
{ id: '#absolute-1', top: 1, left: 1 },
|
{ id: '#absolute-1', top: 1, left: 1 },
|
||||||
|
@ -51,6 +53,16 @@ testoffset("absolute", function( jQuery ) {
|
||||||
equals( jQuery( this.id ).offset().top, this.top, "jQuery('" + this.id + "').offset({ top: " + this.top + " })" );
|
equals( jQuery( this.id ).offset().top, this.top, "jQuery('" + this.id + "').offset({ top: " + this.top + " })" );
|
||||||
equals( jQuery( this.id ).offset().left, this.left, "jQuery('" + this.id + "').offset({ left: " + this.left + " })" );
|
equals( jQuery( this.id ).offset().left, this.left, "jQuery('" + this.id + "').offset({ left: " + this.left + " })" );
|
||||||
|
|
||||||
|
var top = this.top, left = this.left;
|
||||||
|
|
||||||
|
jQuery( this.id ).offset(function(i, val){
|
||||||
|
equals( val.top, top, "Verify incoming top position." );
|
||||||
|
equals( val.left, left, "Verify incoming top position." );
|
||||||
|
return { top: top + 1, left: left + 1 };
|
||||||
|
});
|
||||||
|
equals( jQuery( this.id ).offset().top, this.top + 1, "jQuery('" + this.id + "').offset({ top: " + this.top + " })" );
|
||||||
|
equals( jQuery( this.id ).offset().left, this.left + 1, "jQuery('" + this.id + "').offset({ left: " + this.left + " })" );
|
||||||
|
|
||||||
jQuery( this.id ).offset({ top: this.top, left: this.left, using: function( props ) {
|
jQuery( this.id ).offset({ top: this.top, left: this.left, using: function( props ) {
|
||||||
jQuery( this ).css({
|
jQuery( this ).css({
|
||||||
top: props.top + 1,
|
top: props.top + 1,
|
||||||
|
@ -63,6 +75,8 @@ testoffset("absolute", function( jQuery ) {
|
||||||
});
|
});
|
||||||
|
|
||||||
testoffset("relative", function( jQuery ) {
|
testoffset("relative", function( jQuery ) {
|
||||||
|
expect(60);
|
||||||
|
|
||||||
// IE is collapsing the top margin of 1px
|
// IE is collapsing the top margin of 1px
|
||||||
var ie = jQuery.browser.msie && parseInt( jQuery.browser.version ) < 8;
|
var ie = jQuery.browser.msie && parseInt( jQuery.browser.version ) < 8;
|
||||||
|
|
||||||
|
@ -122,6 +136,8 @@ testoffset("relative", function( jQuery ) {
|
||||||
});
|
});
|
||||||
|
|
||||||
testoffset("static", function( jQuery ) {
|
testoffset("static", function( jQuery ) {
|
||||||
|
expect(80);
|
||||||
|
|
||||||
// IE is collapsing the top margin of 1px
|
// IE is collapsing the top margin of 1px
|
||||||
var ie = jQuery.browser.msie && parseInt( jQuery.browser.version ) < 8;
|
var ie = jQuery.browser.msie && parseInt( jQuery.browser.version ) < 8;
|
||||||
|
|
||||||
|
@ -187,6 +203,8 @@ testoffset("static", function( jQuery ) {
|
||||||
});
|
});
|
||||||
|
|
||||||
testoffset("fixed", function( jQuery ) {
|
testoffset("fixed", function( jQuery ) {
|
||||||
|
expect(28);
|
||||||
|
|
||||||
jQuery.offset.initialize();
|
jQuery.offset.initialize();
|
||||||
|
|
||||||
var tests = [
|
var tests = [
|
||||||
|
@ -238,31 +256,18 @@ testoffset("fixed", function( jQuery ) {
|
||||||
});
|
});
|
||||||
|
|
||||||
testoffset("table", function( jQuery ) {
|
testoffset("table", function( jQuery ) {
|
||||||
var ie = jQuery.browser.msie;
|
expect(4);
|
||||||
|
|
||||||
equals( jQuery('#table-1').offset().top, 6, "jQuery('#table-1').offset().top" );
|
equals( jQuery('#table-1').offset().top, 6, "jQuery('#table-1').offset().top" );
|
||||||
equals( jQuery('#table-1').offset().left, 6, "jQuery('#table-1').offset().left" );
|
equals( jQuery('#table-1').offset().left, 6, "jQuery('#table-1').offset().left" );
|
||||||
|
|
||||||
equals( jQuery('#th-1').offset().top, 10, "jQuery('#th-1').offset().top" );
|
equals( jQuery('#th-1').offset().top, 10, "jQuery('#th-1').offset().top" );
|
||||||
equals( jQuery('#th-1').offset().left, 10, "jQuery('#th-1').offset().left" );
|
equals( jQuery('#th-1').offset().left, 10, "jQuery('#th-1').offset().left" );
|
||||||
|
|
||||||
// equals( jQuery('#th-2').offset().top, 10, "jQuery('#th-2').offset().top" );
|
|
||||||
// equals( jQuery('#th-2').offset().left, 116, "jQuery('#th-2').offset().left" );
|
|
||||||
//
|
|
||||||
// equals( jQuery('#th-3').offset().top, 10, "jQuery('#th-3').offset().top" );
|
|
||||||
// equals( jQuery('#th-3').offset().left, 222, "jQuery('#th-3').offset().left" );
|
|
||||||
|
|
||||||
// equals( jQuery('#td-1').offset().top, ie ? 116 : 112, "jQuery('#td-1').offset().top" );
|
|
||||||
// equals( jQuery('#td-1').offset().left, 10, "jQuery('#td-1').offset().left" );
|
|
||||||
//
|
|
||||||
// equals( jQuery('#td-2').offset().top, ie ? 116 : 112, "jQuery('#td-2').offset().top" );
|
|
||||||
// equals( jQuery('#td-2').offset().left, 116, "jQuery('#td-2').offset().left" );
|
|
||||||
//
|
|
||||||
// equals( jQuery('#td-3').offset().top, ie ? 116 : 112, "jQuery('#td-3').offset().top" );
|
|
||||||
// equals( jQuery('#td-3').offset().left, 222, "jQuery('#td-3').offset().left" );
|
|
||||||
});
|
});
|
||||||
|
|
||||||
testoffset("scroll", function( jQuery, win ) {
|
testoffset("scroll", function( jQuery, win ) {
|
||||||
|
expect(12);
|
||||||
|
|
||||||
var ie = jQuery.browser.msie && parseInt( jQuery.browser.version ) < 8;
|
var ie = jQuery.browser.msie && parseInt( jQuery.browser.version ) < 8;
|
||||||
|
|
||||||
// IE is collapsing the top margin of 1px
|
// IE is collapsing the top margin of 1px
|
||||||
|
@ -294,6 +299,8 @@ testoffset("scroll", function( jQuery, win ) {
|
||||||
});
|
});
|
||||||
|
|
||||||
testoffset("body", function( jQuery ) {
|
testoffset("body", function( jQuery ) {
|
||||||
|
expect(2);
|
||||||
|
|
||||||
equals( jQuery('body').offset().top, 1, "jQuery('#body').offset().top" );
|
equals( jQuery('body').offset().top, 1, "jQuery('#body').offset().top" );
|
||||||
equals( jQuery('body').offset().left, 1, "jQuery('#body').offset().left" );
|
equals( jQuery('body').offset().left, 1, "jQuery('#body').offset().left" );
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue