diff options
author | Dave Methvin <dave.methvin@gmail.com> | 2011-11-21 11:33:21 -0500 |
---|---|---|
committer | Dave Methvin <dave.methvin@gmail.com> | 2011-11-21 11:33:21 -0500 |
commit | 8cb065addc13a8042523b6db4bfd1d80a33c9a46 (patch) | |
tree | db54b745969c49cadced74a19e28ac2ba539e614 | |
parent | 1eb1ad616069ab103ceecf48c48514f51dd5d5ac (diff) | |
download | jquery-8cb065addc13a8042523b6db4bfd1d80a33c9a46.tar.gz jquery-8cb065addc13a8042523b6db4bfd1d80a33c9a46.zip |
Fix #10844. Harden quickIs() against form-aliasing of the id property.
-rw-r--r-- | src/event.js | 5 | ||||
-rw-r--r-- | 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( + '<form id="myform">'+ + '<input type="text" name="id" value="secret agent man" />'+ + '</form>' + ).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); |