Fix for #979
[jquery.git] / src / jquery / jquery.js
index 4e8f7d5..81b5b64 100644 (file)
@@ -824,7 +824,9 @@ jQuery.fn = jQuery.prototype = {
         */
        clone: function(deep) {
                return this.pushStack( jQuery.map( this, function(a){
-                       return a.cloneNode( deep != undefined ? deep : true );
+                       var a = a.cloneNode( deep != undefined ? deep : true );
+                       a.$events = null; // drop $events expando to avoid firing incorrect events
+                       return a;
                }) );
        },
 
@@ -1311,6 +1313,8 @@ jQuery.extend({
                // internal only, use is(".class")
                has: function( t, c ) {
                        t = t.className || t;
+                       // escape regex characters
+                       c = c.replace(/([\.\\\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:])/g, "\\$1");
                        return t && new RegExp("(^|\\s)" + c + "(\\s|$)").test( t );
                }
        },
@@ -1470,7 +1474,7 @@ jQuery.extend({
                        if ( arg.length === 0 )
                                return;
                        
-                       if ( arg[0] == undefined || (jQuery.browser.msie && jQuery.nodeName(arg,"form")) )
+                       if ( arg[0] == undefined )
                                r.push( arg );
                        else
                                r = jQuery.merge( r, arg );