From 26731d475bded26fb1323d4f33266f503474d4b8 Mon Sep 17 00:00:00 2001 From: John Resig Date: Tue, 17 Mar 2009 20:39:29 +0000 Subject: [PATCH] Backed out commit [6260], was causing too many problems. We'll have to bite the bullet and assume that the incoming result set has array methods. Un-fixes jQuery bug #4250. --- src/core.js | 11 ++++++++--- src/selector.js | 21 +++++++++------------ 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/core.js b/src/core.js index 3dfb84a..f02bb06 100644 --- a/src/core.js +++ b/src/core.js @@ -292,9 +292,14 @@ jQuery.fn = jQuery.prototype = { return this.prevObject || jQuery(null); }, + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: [].push, + sort: [].sort, + splice: [].splice, + find: function( selector ) { - var ret = this.pushStack( "", "find", selector ), length = 0, - splice = Array.prototype.splice; + var ret = this.pushStack( "", "find", selector ), length = 0; for ( var i = 0, l = this.length; i < l; i++ ) { length = ret.length; @@ -305,7 +310,7 @@ jQuery.fn = jQuery.prototype = { for ( var n = length; n < ret.length; n++ ) { for ( var r = 0; r < length; r++ ) { if ( ret[r] === ret[n] ) { - splice.call(ret, n--, 1); + ret.splice(n--, 1); break; } } diff --git a/src/selector.js b/src/selector.js index c189515..2fa8e5d 100644 --- a/src/selector.js +++ b/src/selector.js @@ -8,10 +8,7 @@ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g, done = 0, - toString = Object.prototype.toString, - arraySplice = Array.prototype.splice, - arrayPush = Array.prototype.push, - arraySort = Array.prototype.sort; + toString = Object.prototype.toString; var Sizzle = function(selector, context, results, seed) { results = results || []; @@ -107,17 +104,17 @@ var Sizzle = function(selector, context, results, seed) { if ( toString.call(checkSet) === "[object Array]" ) { if ( !prune ) { - arrayPush.apply( results, checkSet ); + results.push.apply( results, checkSet ); } else if ( context && context.nodeType === 1 ) { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { - arrayPush.call( results, set[i] ); + results.push( set[i] ); } } } else { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - arrayPush.call( results, set[i] ); + results.push( set[i] ); } } } @@ -136,12 +133,12 @@ var Sizzle = function(selector, context, results, seed) { Sizzle.uniqueSort = function(results){ if ( sortOrder ) { hasDuplicate = false; - arraySort.call(results, sortOrder); + results.sort(sortOrder); if ( hasDuplicate ) { for ( var i = 1; i < results.length; i++ ) { if ( results[i] === results[i-1] ) { - arraySplice.call(results, i--, 1); + results.splice(i--, 1); } } } @@ -666,7 +663,7 @@ var makeArray = function(array, results) { array = Array.prototype.slice.call( array ); if ( results ) { - arrayPush.apply( results, array ); + results.push.apply( results, array ); return results; } @@ -738,9 +735,9 @@ if ( document.documentElement.compareDocumentPosition ) { // querying by getElementById (and provide a workaround) (function(){ // We're going to inject a fake input element with a specified name - var form = document.createElement("form"), + var form = document.createElement("div"), id = "script" + (new Date).getTime(); - form.innerHTML = ""; + form.innerHTML = ""; // Inject it into the root element, check its status, and remove it quickly var root = document.documentElement; -- 1.7.10.4