Side navigation
#1169 closed bug (duplicate)
Opened May 11, 2007 04:25PM UTC
Closed February 03, 2010 02:23AM UTC
Selecting a form by ID fails if there's a form value element named "id" [patch]
Reported by: | blueyed | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 1.1.3 |
Component: | core | Version: | 1.1.2 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
Given a FORM with ID "foo", $("#foo") will fail in Internet explorer (at least IE6) if there's a INPUT named "id". This is because "oid.id" will then refer to the (hidden) form field, but not the form's tag attribute "id" itself. It even fails when using getAttribute() explicitly.
I've fixed it like below, checking that oid.id is not an object.
Index: jquery/src/selector/selector.js =================================================================== --- jquery/src/selector/selector.js (Revision 1883) +++ jquery/src/selector/selector.js (Arbeitskopie) @@ -229,7 +229,8 @@ // Do a quick check for the existence of the actual ID attribute // to avoid selecting by the name attribute in IE - if ( (jQuery.browser.msie||jQuery.browser.opera) && oid && oid.id != m[2] ) + // NOTE: if you have a form with a hidden field "id", IE6 will select this, even when using getAttribute instead of "oid.id" + if ( (jQuery.browser.msie||jQuery.browser.opera) && oid && oid.id != m[2] && typeof oid.id != "object" ) oid = jQuery('[@id="'+m[2]+'"]', elem)[0]; // Do a quick check for node name (where applicable) so
The patch is against SVN r1883.
Attachments (0)
Change History (3)
Changed May 13, 2007 05:20PM UTC by comment:1
resolution: | → fixed |
---|---|
status: | new → closed |
Changed February 02, 2010 05:22PM UTC by comment:2
resolution: | fixed |
---|---|
status: | closed → reopened |
I'm still having problems updating/using a FORM element attribute 'id' in Firefox and Internet Explorer (jQuery 1.4.1 + tested on 1.3 and 1.3.2). See the code bellow:
Sample code
<form id="foo"> <input name="id"> </form> <script type="text/javascript"> alert($("#foo").attr('id')); $("#foo").attr('id', 'bar'); alert($("#foo").attr('id')); alert($("#bar").attr('id')); </script>
Output
Firefox 3.5.7
foo-foo-null [wrong]
Internet Explorer 8.0
foo- ... crashes on line: $("#foo").attr('id', 'bar');
Google Chrome 4.0
foo-null-bar [correct]
Fixed in SVN Rev [1896].