aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Methvin <dave.methvin@gmail.com>2011-11-21 11:33:21 -0500
committerDave Methvin <dave.methvin@gmail.com>2011-11-21 11:33:21 -0500
commit8cb065addc13a8042523b6db4bfd1d80a33c9a46 (patch)
treedb54b745969c49cadced74a19e28ac2ba539e614
parent1eb1ad616069ab103ceecf48c48514f51dd5d5ac (diff)
downloadjquery-8cb065addc13a8042523b6db4bfd1d80a33c9a46.tar.gz
jquery-8cb065addc13a8042523b6db4bfd1d80a33c9a46.zip
Fix #10844. Harden quickIs() against form-aliasing of the id property.
-rw-r--r--src/event.js5
-rw-r--r--test/unit/event.js23
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);