Merge branch 'attrFollowupFix' of https://github.com/jitter/jquery into jitter-attrFo...
authorjeresig <jeresig@gmail.com>
Thu, 9 Dec 2010 17:43:10 +0000 (12:43 -0500)
committerjeresig <jeresig@gmail.com>
Thu, 9 Dec 2010 17:43:10 +0000 (12:43 -0500)
src/attributes.js
test/unit/attributes.js

index b0e3601..78b1bfd 100644 (file)
@@ -272,8 +272,8 @@ jQuery.extend({
        },
 
        attr: function( elem, name, value, pass ) {
-               // don't set attributes on text and comment nodes
-               if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+               // don't get/set attributes on text, comment and attribute nodes
+               if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {
                        return undefined;
                }
 
index f30779d..f9506b3 100644 (file)
@@ -171,12 +171,12 @@ test("attr(String, Object)", function() {
                commentNode = document.createComment("some comment"),
                textNode = document.createTextNode("some text"),
                obj = {};
-       jQuery.each( [document, attributeNode, obj, "#firstp"], function( i, ele ) {
+       jQuery.each( [document, obj, "#firstp"], function( i, ele ) {
                var $ele = jQuery( ele );
                $ele.attr( "nonexisting", "foo" );
                equal( $ele.attr("nonexisting"), "foo", "attr(name, value) works correctly for non existing attributes (bug #7500)." );
        });
-       jQuery.each( [commentNode, textNode], function( i, ele ) {
+       jQuery.each( [commentNode, textNode, attributeNode], function( i, ele ) {
                var $ele = jQuery( ele );
                $ele.attr( "nonexisting", "foo" );
                strictEqual( $ele.attr("nonexisting"), undefined, "attr(name, value) works correctly on comment and text nodes (bug #7500)." );
@@ -366,12 +366,12 @@ test("removeAttr(String)", function() {
        //removeAttr only really removes on DOM element nodes handle all other seperatyl
        strictEqual( jQuery( "#firstp" ).attr( "nonexisting", "foo" ).removeAttr( "nonexisting" )[0].nonexisting, undefined, "removeAttr works correctly on DOM element nodes" );
 
-       jQuery.each( [document, attributeNode, obj], function( i, ele ) {
+       jQuery.each( [document, obj], function( i, ele ) {
                var $ele = jQuery( ele );
                $ele.attr( "nonexisting", "foo" ).removeAttr( "nonexisting" );
                strictEqual( ele.nonexisting, "", "removeAttr works correctly on non DOM element nodes (bug #7500)." );
        });
-       jQuery.each( [commentNode, textNode], function( i, ele ) {
+       jQuery.each( [commentNode, textNode, attributeNode], function( i, ele ) {
                $ele = jQuery( ele );
                $ele.attr( "nonexisting", "foo" ).removeAttr( "nonexisting" );
                strictEqual( ele.nonexisting, undefined, "removeAttr works correctly on non DOM element nodes (bug #7500)." );