Make sure that at least one argument is provided to .slice(), in accordance with the spec. Fixes jQuery bug #4942.

This commit is contained in:
John Resig 2009-07-23 13:22:55 +00:00
parent b964e56946
commit 0a6c5205d2
3 changed files with 8 additions and 6 deletions

View file

@ -128,7 +128,9 @@ jQuery.fn = jQuery.prototype = {
return this.length;
},
toArray: slice,
toArray: function(){
return slice.call( this, 0 );
},
// Get the Nth element in the matched element set OR
// Get the whole matched element set as a clean array

View file

@ -57,7 +57,7 @@ jQuery.event = {
// Namespaced event handlers
var namespaces = type.split(".");
type = namespaces.shift();
handler.type = namespaces.slice().sort().join(".");
handler.type = namespaces.slice(0).sort().join(".");
// Get the current list of functions bound to this event
var handlers = events[ type ],
@ -133,7 +133,7 @@ jQuery.event = {
var namespaces = type.split(".");
type = namespaces.shift();
var all = !namespaces.length,
namespace = new RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)"),
namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join(".*\\.") + "(\\.|$)"),
special = this.special[ type ] || {};
if ( events[ type ] ) {
@ -291,7 +291,7 @@ jQuery.event = {
// Cache this now, all = true means, any handler
all = !namespaces.length && !event.exclusive;
var namespace = new RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
var namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join(".*\\.") + "(\\.|$)");
handlers = ( jQuery.data(this, "events") || {} )[ event.type ];

View file

@ -661,7 +661,7 @@ for ( var type in Expr.match ) {
}
var makeArray = function(array, results) {
array = Array.prototype.slice.call( array );
array = Array.prototype.slice.call( array, 0 );
if ( results ) {
results.push.apply( results, array );
@ -674,7 +674,7 @@ var makeArray = function(array, results) {
// Perform a simple check to determine if the browser is capable of
// converting a NodeList to an array using builtin methods.
try {
Array.prototype.slice.call( document.documentElement.childNodes );
Array.prototype.slice.call( document.documentElement.childNodes, 0 );
// Provide a fallback method if it does not work
} catch(e){