Restrict the attr quick setters to only methods that specifically ask for the functio...
authorJohn Resig <jeresig@gmail.com>
Thu, 10 Dec 2009 05:28:33 +0000 (21:28 -0800)
committerJohn Resig <jeresig@gmail.com>
Thu, 10 Dec 2009 05:28:33 +0000 (21:28 -0800)
src/attributes.js
src/event.js

index 8080af8..fb5b16b 100644 (file)
@@ -200,12 +200,27 @@ jQuery.each({
 });
 
 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 ) {
                // don't set attributes on text and comment nodes
                if (!elem || elem.nodeType == 3 || elem.nodeType == 8) {
                        return undefined;
                }
-               if ( name in jQuery.fn && name !== "attr" ) {
+
+               if ( name in jQuery.attrFn ) {
                        return jQuery(elem)[name](value);
                }
 
index f766896..a32f033 100644 (file)
@@ -885,6 +885,10 @@ jQuery.each( ("blur focus load resize scroll unload click dblclick " +
        jQuery.fn[ name ] = function( fn ) {
                return fn ? this.bind( name, fn ) : this.trigger( name );
        };
+
+       if ( jQuery.fnAttr ) {
+               jQuery.fnAttr[ name ] = true;
+       }
 });
 
 // Prevent memory leaks in IE