]> source.dussan.org Git - jquery.git/commitdiff
Fix #12840: remove undocumented parameter "pass" from .attr. Close gh-1017.
authorRichard Gibson <richard.gibson@gmail.com>
Mon, 5 Nov 2012 22:21:24 +0000 (17:21 -0500)
committerRichard Gibson <richard.gibson@gmail.com>
Mon, 5 Nov 2012 22:21:24 +0000 (17:21 -0500)
src/attributes.js
src/core.js
test/unit/attributes.js

index dbaf3d5eb8d4370fef3778354101f474878aaf58..8ae23f72a3ffb36d762cc75d3dacf9542e664d52 100644 (file)
@@ -280,7 +280,7 @@ jQuery.extend({
                }
        },
 
-       attr: function( elem, name, value, pass ) {
+       attr: function( elem, name, value ) {
                var ret, hooks, notxml,
                        nType = elem.nodeType;
 
@@ -289,10 +289,6 @@ jQuery.extend({
                        return;
                }
 
-               if ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) {
-                       return jQuery( elem )[ name ]( value );
-               }
-
                // Fallback to prop when attributes are not supported
                if ( typeof elem.getAttribute === "undefined" ) {
                        return jQuery.prop( elem, name, value );
@@ -311,9 +307,8 @@ jQuery.extend({
 
                        if ( value === null ) {
                                jQuery.removeAttr( elem, name );
-                               return;
 
-                       } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
+                       } else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
                                return ret;
 
                        } else {
@@ -321,7 +316,7 @@ jQuery.extend({
                                return value;
                        }
 
-               } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
+               } else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
                        return ret;
 
                } else {
index 1b3f106ae514aa2da56a1ae9db9c2db941fd2874..f34d72c25ab50a4c3cb4417f33aa875ce92e1e1e 100644 (file)
@@ -84,14 +84,14 @@ var
 jQuery.fn = jQuery.prototype = {
        constructor: jQuery,
        init: function( selector, context, rootjQuery ) {
-               var match, elem, doc;
+               var match, elem;
 
-               // Handle $(""), $(null), $(undefined), $(false)
+               // HANDLE: $(""), $(null), $(undefined), $(false)
                if ( !selector ) {
                        return this;
                }
 
-               // Handle $(DOMElement)
+               // HANDLE: $(DOMElement)
                if ( selector.nodeType ) {
                        this.context = this[0] = selector;
                        this.length = 1;
@@ -114,15 +114,29 @@ jQuery.fn = jQuery.prototype = {
                                // HANDLE: $(html) -> $(array)
                                if ( match[1] ) {
                                        context = context instanceof jQuery ? context[0] : context;
-                                       doc = ( context && context.nodeType ? context.ownerDocument || context : document );
 
                                        // scripts is true for back-compat
-                                       selector = jQuery.parseHTML( match[1], doc, true );
+                                       jQuery.merge( this, jQuery.parseHTML(
+                                               match[1],
+                                               context && context.nodeType ? context.ownerDocument || context : document,
+                                               true
+                                       ) );
+
+                                       // HANDLE: $(html, props)
                                        if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
-                                               this.attr.call( selector, context, true );
+                                               for ( match in context ) {
+                                                       // Properties of context are called as methods if possible
+                                                       if ( jQuery.isFunction( this[ match ] ) ) {
+                                                               this[ match ]( context[ match ] );
+
+                                                       // ...and otherwise set as attributes
+                                                       } else {
+                                                               this.attr( match, context[ match ] );
+                                                       }
+                                               }
                                        }
 
-                                       return jQuery.merge( this, selector );
+                                       return this;
 
                                // HANDLE: $(#id)
                                } else {
@@ -768,23 +782,22 @@ jQuery.extend({
 
        // Multifunctional method to get and set values of a collection
        // The value/s can optionally be executed if it's a function
-       access: function( elems, fn, key, value, chainable, emptyGet, pass ) {
-               var exec,
+       access: function( elems, fn, key, value, chainable, emptyGet ) {
+               var i = 0,
+                       length = elems.length,
                        bulk = key == null,
-                       i = 0,
-                       length = elems.length;
+                       exec = value !== undefined && jQuery.isFunction( value );
 
                // Sets many values
                if ( key && typeof key === "object" ) {
+                       chainable = true;
                        for ( i in key ) {
-                               jQuery.access( elems, fn, i, key[i], 1, emptyGet, value );
+                               jQuery.access( elems, fn, i, key[i], true, emptyGet );
                        }
-                       chainable = 1;
 
                // Sets one value
                } else if ( value !== undefined ) {
-                       // Optionally, function values get executed if exec is true
-                       exec = pass === undefined && jQuery.isFunction( value );
+                       chainable = true;
 
                        if ( bulk ) {
                                // Bulk operations only iterate when executing function values
@@ -802,12 +815,10 @@ jQuery.extend({
                        }
 
                        if ( fn ) {
-                               for (; i < length; i++ ) {
-                                       fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+                               for ( ; i < length; i++ ) {
+                                       fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value );
                                }
                        }
-
-                       chainable = 1;
                }
 
                return chainable ?
index e2648a0e60d125acb7c1e90e070d913aef01dc2c..3ad08a75ac59cbfdfa1d8b0bc69d73f46b9f70c2 100644 (file)
@@ -435,84 +435,6 @@ test( "attr(String, Object)", function() {
        equal( jQuery("#name").attr( "nonexisting", undefined ).attr("nonexisting"), undefined, ".attr('attribute', undefined) does not create attribute (#5571)" );
 });
 
-test( "attr(jquery_method)", function() {
-
-       var $elem = jQuery("<div />"),
-               elem = $elem[ 0 ],
-               expected = 2,
-               attrObj = {};
-
-       if ( jQuery.fn.width ) {
-               expected += 2;
-               attrObj["width"] = 10;
-       }
-
-       if ( jQuery.fn.offset ) {
-               expected += 2;
-               attrObj["offset"] = {
-                       "top": 1,
-                       "left": 0
-               };
-       }
-
-       if ( jQuery.css ) {
-               expected += 3;
-               attrObj["css"] = {
-                       "paddingLeft": 1,
-                       "paddingRight": 1
-               };
-       }
-
-       expect( expected );
-
-       // one at a time
-       $elem.attr({
-               "html": "foo"
-       }, true );
-       equal( elem.innerHTML, "foo", "attr(html)" );
-
-       $elem.attr({
-               "text": "bar"
-       }, true );
-       equal( elem.innerHTML, "bar", "attr(text)" );
-
-       // Multiple attributes
-       $elem.attr( attrObj, true );
-
-       if ( jQuery.fn.width ) {
-               equal( elem.style.width, "10px", "attr({width:})" );
-
-               $elem.attr( {
-                       "height": 10
-               }, true );
-               equal( elem.style.height, "10px", "attr(height)" );
-       }
-
-       if ( jQuery.fn.offset ) {
-               equal( elem.style.top, "1px", "attr({offset:})" );
-
-               $elem.attr({
-                       offset: {
-                               top: 1,
-                               left: 1
-                       }
-               }, true );
-               equal( elem.style.left, "1px", "attr(offset)" );
-       }
-
-       if ( jQuery.css ) {
-               equal( elem.style.paddingLeft, "1px", "attr({css:})" );
-               equal( elem.style.paddingRight, "1px", "attr({css:})" );
-
-               $elem.attr({
-                       "css": {
-                               "color": "red"
-                       }
-               }, true );
-               ok( /^(#ff0000|red)$/i.test( elem.style.color ), "attr(css)" );
-       }
-});
-
 test( "attr(String, Object) - Loaded via XML document", function() {
        expect( 2 );
        var xml = createDashboardXML();