Хотя это может быть неуместным ответом, но поскольку вопрос заключается в том, как передать параметр в jQuery для каждой функции.
Первый подход: использование частичной функции - подробнее об этом и из библиотеки закрытий
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));
Второй подход
$. каждая функция может принимать либо 2 параметра Index
и Element
(которые также могут упоминаться как this
) ИЛИ если вам не нужен Index
, тогда вы можете передать Array
в качестве аргумента $ .eachи элемент может называться следующим:
ВНИМАНИЕ: args предназначен только для внутреннего использования - 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 );
},
, который будет вызывать each: function( obj, callback, args )
затем вызовите callback.apply( obj[ i ], args );
, если вы передадите массив в качестве аргумента, в противном случае callback.call( obj[ i ], i, obj[ i ] )
;
обратите внимание на разницу применения и вызовите
Пример кода: 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']);
Для справки jQuery Каждый код версии 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;
},