X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjquery%2Fjquery.js;h=72596ad7a69f3670a8cf99a8e7f7434a4d9d7d8d;hb=03b0a9c654727e4bb551865793548c907687a4ae;hp=c17d6248bc9bf1dc9daa30d00e6174cde3d23c66;hpb=ddd110c9e583fb43257ae1b9b06223bdc7e21f31;p=jquery.git diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index c17d624..72596ad 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -31,7 +31,7 @@ window.undefined = window.undefined; var jQuery = function(a,c) { // Shortcut for document ready (because $(document).each() is silly) - if ( a && typeof a == "function" && jQuery.fn.ready ) + if ( a && typeof a == "function" && jQuery.fn.ready && !a.nodeType && a[0] == undefined ) // Safari reports typeof on DOM NodeLists as a function return jQuery(document).ready(a); // Make sure that a selection was provided @@ -56,7 +56,7 @@ var jQuery = function(a,c) { } // Watch for when an array is passed in - this.get( a.constructor == Array || a.length && !a.nodeType && a[0] != undefined && a[0].nodeType ? + this.get( a.constructor == Array || a.length && a != window && !a.nodeType && a[0] != undefined && a[0].nodeType ? // Assume that it is an array of DOM Elements jQuery.merge( a, [] ) : @@ -944,12 +944,15 @@ jQuery.fn = jQuery.prototype = { * @result $("p").find("span").end() == [

...

] * * @test ok( 'Yahoo' == $('#yahoo').parent().end().text(), 'Check for end' ); + * ok( $('#yahoo').end(), 'Check for end with nothing to end' ); * * @name end * @type jQuery * @cat DOM/Traversing */ end: function() { + if( !(this.stack && this.stack.length) ) + return this; return this.get( this.stack.pop() ); }, @@ -1565,14 +1568,12 @@ jQuery.extend({ // Go to html and back, then peel off extra wrappers div.innerHTML = wrap[1] + s + wrap[2]; while ( wrap[0]-- ) div = div.firstChild; - - // 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] ); + arg = div.childNodes; } - else if ( arg.length != undefined && !arg.nodeType ) // Handles Array, jQuery, DOM NodeList collections - for ( var n = 0; n < arg.length; n++ ) + + + if ( arg.length != undefined && ( (jQuery.browser.safari && typeof arg == 'function') || !arg.nodeType ) ) // Safari reports typeof on a DOM NodeList to be a function + for ( var n = 0; n < arg.length; n++ ) // Handles Array, jQuery, DOM NodeList collections r.push(arg[n]); else r.push( arg.nodeType ? arg : document.createTextNode(arg.toString()) ); @@ -1695,10 +1696,6 @@ jQuery.extend({ * t( "Attribute Exists", "a[@title]", ["google"] ); * t( "Attribute Exists", "*[@title]", ["google"] ); * t( "Attribute Exists", "[@title]", ["google"] ); - * - * t( "Non-existing part of attribute", "[@name*=bla]", [] ); - * t( "Non-existing start of attribute", "[@name^=bla]", [] ); - * t( "Non-existing end of attribute", "[@name$=bla]", [] ); * * t( "Attribute Equals", "a[@rel='bookmark']", ["simon1"] ); * t( "Attribute Equals", 'a[@rel="bookmark"]', ["simon1"] ); @@ -1734,8 +1731,8 @@ jQuery.extend({ * t( "Attribute Exists", "//a[@title]", ["google"] ); * t( "Attribute Equals", "//a[@rel='bookmark']", ["simon1"] ); * t( "Parent Axis", "//p/..", ["main","foo"] ); - * t( "Sibling Axis", "//p/../", ["firstp","ap","foo","first","firstUL","empty","form","sndp","en","sap"] ); - * t( "Sibling Axis", "//p/../*", ["firstp","ap","foo","first","firstUL","empty","form","sndp","en","sap"] ); + * t( "Sibling Axis", "//p/../", ["firstp","ap","foo","first","firstUL","empty","form","floatTest","sndp","en","sap"] ); + * t( "Sibling Axis", "//p/../*", ["firstp","ap","foo","first","firstUL","empty","form","floatTest","sndp","en","sap"] ); * t( "Has Children", "//p[a]", ["firstp","ap","en","sap"] ); * * t( "nth Element", "p:nth(1)", ["ap"] ); @@ -1906,7 +1903,7 @@ jQuery.extend({ return elem[fix[name]]; } else if( value == undefined && jQuery.browser.msie && elem.nodeName && elem.nodeName.toUpperCase() == 'FORM' && (name == 'action' || name == 'method') ) { return elem.getAttributeNode(name).nodeValue; - } else if ( elem.getAttribute != undefined && elem.tagName ) { // IE elem.getAttribute passes even for style + } else if ( elem.tagName ) { // IE elem.getAttribute passes even for style if ( value != undefined ) elem.setAttribute( name, value ); return elem.getAttribute( name ); } else { @@ -2248,8 +2245,8 @@ jQuery.extend({ }, trigger: function(type,data,element) { - // Touch up the incoming data - data = data || []; + // Clone the incoming data, if any + data = $.merge([], data || []); // Handle a global trigger if ( !element ) {