]> source.dussan.org Git - jquery.git/commitdiff
Landing pull request 461. Adds a due diligence check for pre-defined data-* attrs...
authorRick Waldron <waldron.rick@gmail.com>
Mon, 22 Aug 2011 17:49:18 +0000 (13:49 -0400)
committertimmywil <timmywillisn@gmail.com>
Mon, 22 Aug 2011 17:49:18 +0000 (13:49 -0400)
More Details:
 - https://github.com/jquery/jquery/pull/461
 - http://bugs.jquery.com/ticket/10026

src/data.js
test/unit/data.js

index 4f87a355042fe0ead6195dfbfd5ab3fcab62c07f..763b3df128548ec6470182f6f7ed2fe8e63d26be 100644 (file)
@@ -167,6 +167,11 @@ jQuery.extend({
 
                                delete thisCache[ name ];
 
+                               // Check the actual element for predefined data-* attrs, #10027
+                               if ( jQuery.attr( elem, "data-" + name ) ) {
+                                       jQuery.removeAttr( elem, "data-" + name );
+                               }
+
                                // If there is no data left in the cache, we want to continue
                                // and let the cache object itself get destroyed
                                if ( !isEmptyDataObject(thisCache) ) {
index 4e21f563e7b54d227606183e199a71499ebb4287..37d29bc201810033a39a69fff8dffcf38cd784e4 100644 (file)
@@ -568,7 +568,7 @@ test("jQuery.data supports interoperable removal of hyphenated/camelCase propert
                        "some-json": '{ "foo": "bar" }'
                };
 
-       expect( 27 );
+       expect( 29 );
 
        jQuery.each( datas, function( key, val ) {
                div.data( key, val );
@@ -581,4 +581,15 @@ test("jQuery.data supports interoperable removal of hyphenated/camelCase propert
                equal( div.data( key ), undefined, "get: " + key );
 
        });
+
+       div.remove();
+
+       // Covers #10027
+       div = jQuery("<div data-msg='hello'></div>");
+
+       equal( div.data("msg"), "hello", "<div data-msg='hello'></div> has expected data" );
+
+       div.removeData("msg");
+
+       equal( div.data("msg"), undefined, "data-msg removed correctly" );
 });