From 8cb065addc13a8042523b6db4bfd1d80a33c9a46 Mon Sep 17 00:00:00 2001 From: Dave Methvin Date: Mon, 21 Nov 2011 11:33:21 -0500 Subject: [PATCH] Fix #10844. Harden quickIs() against form-aliasing of the id property. --- src/event.js | 5 +++-- test/unit/event.js | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/event.js b/src/event.js index 57fe00cbe..4b841bbce 100644 --- a/src/event.js +++ b/src/event.js @@ -18,10 +18,11 @@ var rformElems = /^(?:textarea|input|select)$/i, return quick; }, quickIs = function( elem, m ) { + var attrs = elem.attributes || {}; return ( (!m[1] || elem.nodeName.toLowerCase() === m[1]) && - (!m[2] || elem.id === m[2]) && - (!m[3] || m[3].test( ((elem.attributes || {})[ "class" ] || {}).value )) + (!m[2] || (attrs.id || {}).value === m[2]) && + (!m[3] || m[3].test( (attrs[ "class" ] || {}).value )) ); }, hoverHack = function( events ) { diff --git a/test/unit/event.js b/test/unit/event.js index eb5f98fb8..4ad8f9d85 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -1209,6 +1209,29 @@ test("Delegated events in SVG (#10791)", function() { svg.remove(); }); +test("Delegated events in forms (#10844)", function() { + expect(1); + + // Aliases names like "id" cause havoc + var form = jQuery( + '
'+ + ''+ + '
' + ).appendTo( "body" ); + + jQuery( "body" ) + .on( "submit", "#myform", function() { + ok( true, "delegated id selector with aliased name" ); + return false; + }) + .find( "#myform" ) + .trigger( "submit" ) + .end() + .off( "submit" ); + + form.remove(); +}); + test("jQuery.Event( type, props )", function() { expect(5);