// Retrieve booleans specially
jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
- var getter = attrHandle[ name ] || jQuery.find.attr,
- fn = attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?
+ var getter = attrHandle[ name ] || jQuery.find.attr;
+
+ attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?
function( elem, name, isXML ) {
- var ret;
+ var ret, handle;
if ( !isXML ) {
// Avoid an infinite loop by temporarily removing this function from the getter
+ handle = attrHandle[ name ];
attrHandle[ name ] = ret;
ret = getter( elem, name, isXML ) != null ?
name.toLowerCase() :
null;
- attrHandle[ name ] = fn;
+ attrHandle[ name ] = handle;
}
return ret;
} :
equal( jQuery("#name").attr( "nonexisting", undefined ).attr("nonexisting"), undefined, ".attr('attribute', undefined) does not create attribute (#5571)" );
});
+test( "attr - extending the boolean attrHandle", function() {
+ expect( 1 );
+ var called = false,
+ _handle = jQuery.expr.attrHandle.checked || $.noop;
+ jQuery.expr.attrHandle.checked = function() {
+ called = true;
+ _handle.apply( this, arguments );
+ };
+ jQuery( "input" ).attr( "checked" );
+ called = false;
+ jQuery( "input" ).attr( "checked" );
+ ok( called, "The boolean attrHandle does not drop custom attrHandles" );
+});
+
test( "attr(String, Object) - Loaded via XML document", function() {
expect( 2 );
var xml = createDashboardXML(),