mirror of
https://github.com/jquery/jquery.git
synced 2025-01-10 18:24:24 +00:00
Fix for custom attr handles duck-punching the boolean attr handle
This commit is contained in:
parent
2af2e74e27
commit
05d907d1b1
@ -145,17 +145,19 @@ boolHook = {
|
||||
// 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;
|
||||
} :
|
||||
|
@ -473,6 +473,20 @@ test( "attr(String, Object)", function() {
|
||||
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(),
|
||||
|
Loading…
Reference in New Issue
Block a user