]> source.dussan.org Git - jquery.git/commitdiff
Fix #13203: delegated events with selector matching Object.prototype property
authorRichard Gibson <richard.gibson@gmail.com>
Mon, 14 Jan 2013 02:38:40 +0000 (21:38 -0500)
committerRichard Gibson <richard.gibson@gmail.com>
Mon, 14 Jan 2013 02:42:36 +0000 (21:42 -0500)
(cherry picked from commit 31b95797155077e4e670c0bbb2c57815f89769a1)

src/event.js
test/unit/event.js

index 6c0dc41ca89645e8bcffcf30ce5a755e967f4412..772d65ef49533da78999f38cab4e05af9b55b092 100644 (file)
@@ -415,7 +415,9 @@ jQuery.event = {
                                        matches = [];
                                        for ( i = 0; i < delegateCount; i++ ) {
                                                handleObj = handlers[ i ];
-                                               sel = handleObj.selector;
+
+                                               // Don't conflict with Object.prototype properties (#13203)
+                                               sel = handleObj.selector + " ";
 
                                                if ( matches[ sel ] === undefined ) {
                                                        matches[ sel ] = handleObj.needsContext ?
index 041920a533e9c202ad0ca42bf1bc75580317dd23..bc98f73cb5a23bb0384d492d669974f6f5eb3c7f 100644 (file)
@@ -1797,6 +1797,20 @@ test( "delegated event with delegateTarget-relative selector", function() {
        markup.remove();
 });
 
+test( "delegated event with selector matching Object.prototype property (#13203)", function() {
+       expect(1);
+
+       var matched = 0;
+
+       jQuery("#foo").on( "click", "toString", function( e ) {
+               matched++;
+       });
+
+       jQuery("#anchor2").trigger("click");
+
+       equal( matched, 0, "Nothing matched 'toString'" );
+});
+
 test("stopPropagation() stops directly-bound events on delegated target", function() {
        expect(1);