Aunque esto puede no ser la respuesta correspondiente, pero dado que la cuestión es cómo pasar parámetros a jQuery cada función.
Primer acercamiento: Utilizar la función parcial - more on this y desde closure library
jsfiddle:
var param = 'extra-param';
var partial = function(fn, var_args) {
var args = Array.prototype.slice.call(arguments, 1);
return function() {
// Clone the array (with slice()) and append additional arguments
// to the existing arguments.
var newArgs = args.slice();
newArgs.push.apply(newArgs, arguments);
return fn.apply(this, newArgs);
};
};
$(['joe','james','rick','kirk']).each(partial (function (index,value) {
alert(arguments.length);
alert(arguments[0]);
},param));
segundo enfoque es función
$ .Cada puede tomar cualquiera de 2 parámetros Index
y Element
(Que también se puede denominar como this
) O si no es necesario Index
entonces puede pasar como argumento para Array
$ .Cada y el elemento puede referido como este
PRECAUCIÓN: args es sólo para uso interno - por jQuery
// Execute a callback for every element in the matched set.
// (You can seed the arguments with an array of args, but this is
// only used internally.)
each: function(callback, args) {
return jQuery.each(this, callback, args);
},
que llamará each: function(obj, callback, args)
luego llamar callback.apply(obj[ i ], args);
si pasa matriz como argumento OTH erwise callback.call(obj[ i ], i, obj[ i ])
;
tenga en cuenta la diferencia de aplicar y llamar Código de ejemplo
: http://jsfiddle.net/dekajp/yA89R/1/
var param = 'rick';
$(['joe','james','rick','kirk']).each(function (arg1 , arg2 ,arg3) {
//alert('[this: '+this +'] [arg1: '+ arg1 +'] [arg2:'+arg2+'] [param:'+param+']');
},['hello 1','hello 2','hello 3']);
Para referencia jQuery Cada versión Código 1,9
// args is for internal usage only
each: function(obj, callback, args) {
var value,
i = 0,
length = obj.length,
isArray = isArraylike(obj);
if (args) {
if (isArray) {
for (; i < length; i++) {
value = callback.apply(obj[ i ], args);
if (value === false) {
break;
}
}
} else {
for (i in obj) {
value = callback.apply(obj[ i ], args);
if (value === false) {
break;
}
}
}
// A special, fast, case for the most common use of each
} else {
if (isArray) {
for (; i < length; i++) {
value = callback.call(obj[ i ], i, obj[ i ]);
if (value === false) {
break;
}
}
} else {
for (i in obj) {
value = callback.call(obj[ i ], i, obj[ i ]);
if (value === false) {
break;
}
}
}
}
return obj;
},
Gracias! +1 para [jsfiddle.net] (http://www.jsfiddle.net) – MarioVW