// Go to html and back, then peel off extra wrappers
div.innerHTML = wrap[1] + s + wrap[2];
while ( wrap[0]-- ) div = div.firstChild;
- arg = div.childNodes;
- }
-
- if ( arg.length != undefined && !arg.nodeType ) // Handles Array, jQuery, DOM NodeList collections
+
+ // Have to loop through the childNodes here to
+ // prevent a Safari crash with text nodes and /n characters
+ for ( var j = 0; j < div.childNodes.length; j++ )
+ r.push( div.childNodes[j] );
+ }
+ else if ( arg.length != undefined && !arg.nodeType ) // Handles Array, jQuery, DOM NodeList collections
for ( var n = 0; n < arg.length; n++ )
r.push(arg[n]);
else
},
fix: function(event) {
- if ( event ) {
+ // check IE
+ if(jQuery.browser.msie) {
+ // get real event from window.event
+ event = window.event;
event.preventDefault = function() {
this.returnValue = false;
};
-
event.stopPropagation = function() {
this.cancelBubble = true;
};
+ // fix target property
+ event.target = event.srcElement;
+ // check safari and if target is a textnode
+ } else if(jQuery.browser.safari && event.target.nodeType == 3) {
+ // target is readonly, clone the event object
+ event = jQuery.extend({}, event);
+ // get parentnode from textnode
+ event.target = event.target.parentNode;
}
-
return event;
}