Fix for #1169
[jquery.git] / src / selector / selector.js
index 472b4ab..6ad8e5c 100644 (file)
@@ -56,9 +56,6 @@ jQuery.extend({
                        "$=": "z&&z.substr(z.length - m[4].length,m[4].length)==m[4]",
                        "*=": "z&&z.indexOf(m[4])>=0",
                        "": "z",
-                       // these are for evaling in a regexp.
-                       "=~": "eval(m[4]).test(z)",
-                       "!~": "!eval(m[4]).test(z)",
                        _resort: function(m){
                                return ["", m[1], m[3], m[2], m[5]];
                        },
@@ -70,7 +67,7 @@ jQuery.extend({
        // The regular expressions that power the parsing engine
        parse: [
                // Match: [@value='test'], [@foo]
-               /^\[ *(@)([\w-]+) *([!*$^=!~]*) *('?"?)(.*?)\4 *\]/,
+               /^\[ *(@)([\w-]+) *([!*$^=]*) *('?"?)(.*?)\4 *\]/,
 
                // Match: [div], [div p]
                /^(\[)\s*(.*?(\[.*?\])?[^[]*?)\s*\]/,
@@ -232,7 +229,8 @@ jQuery.extend({
                                                
                                                // 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] )
+                                               // also check to insure id is a string to avoid selecting an element with the name of 'id' inside a form
+                                               if ( (jQuery.browser.msie||jQuery.browser.opera) && oid && typeof oid.id == "string" && oid.id != m[2] )
                                                        oid = jQuery('[@id="'+m[2]+'"]', elem)[0];
 
                                                // Do a quick check for node name (where applicable) so