Fix #13203: delegated events with selector matching Object.prototype property

This commit is contained in:
Richard Gibson 2013-01-13 21:38:40 -05:00
parent de486684e3
commit 31b9579715
2 changed files with 17 additions and 1 deletions

View File

@ -403,7 +403,9 @@ jQuery.event = {
matches = []; matches = [];
for ( i = 0; i < delegateCount; i++ ) { for ( i = 0; i < delegateCount; i++ ) {
handleObj = handlers[ i ]; handleObj = handlers[ i ];
sel = handleObj.selector;
// Don't conflict with Object.prototype properties (#13203)
sel = handleObj.selector + " ";
if ( matches[ sel ] === undefined ) { if ( matches[ sel ] === undefined ) {
matches[ sel ] = handleObj.needsContext ? matches[ sel ] = handleObj.needsContext ?

View File

@ -1797,6 +1797,20 @@ test( "delegated event with delegateTarget-relative selector", function() {
markup.remove(); 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() { test("stopPropagation() stops directly-bound events on delegated target", function() {
expect(1); expect(1);