Restrict the attr quick setters to only methods that specifically ask for the functionality. Fixes #5612.
This commit is contained in:
parent
1a4d1904ae
commit
f25eedf32a
|
@ -200,12 +200,27 @@ jQuery.each({
|
||||||
});
|
});
|
||||||
|
|
||||||
jQuery.extend({
|
jQuery.extend({
|
||||||
|
attrFn: {
|
||||||
|
val: true,
|
||||||
|
addClass: true,
|
||||||
|
css: true,
|
||||||
|
html: true,
|
||||||
|
text: true,
|
||||||
|
append: true,
|
||||||
|
prepend: true,
|
||||||
|
data: true,
|
||||||
|
width: true,
|
||||||
|
height: true,
|
||||||
|
offset: true
|
||||||
|
},
|
||||||
|
|
||||||
attr: function( elem, name, value ) {
|
attr: function( elem, name, value ) {
|
||||||
// don't set attributes on text and comment nodes
|
// don't set attributes on text and comment nodes
|
||||||
if (!elem || elem.nodeType == 3 || elem.nodeType == 8) {
|
if (!elem || elem.nodeType == 3 || elem.nodeType == 8) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
if ( name in jQuery.fn && name !== "attr" ) {
|
|
||||||
|
if ( name in jQuery.attrFn ) {
|
||||||
return jQuery(elem)[name](value);
|
return jQuery(elem)[name](value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -885,6 +885,10 @@ jQuery.each( ("blur focus load resize scroll unload click dblclick " +
|
||||||
jQuery.fn[ name ] = function( fn ) {
|
jQuery.fn[ name ] = function( fn ) {
|
||||||
return fn ? this.bind( name, fn ) : this.trigger( name );
|
return fn ? this.bind( name, fn ) : this.trigger( name );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if ( jQuery.fnAttr ) {
|
||||||
|
jQuery.fnAttr[ name ] = true;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Prevent memory leaks in IE
|
// Prevent memory leaks in IE
|
||||||
|
|
Loading…
Reference in a new issue