虽然这个例子可能不相关的答案,但因为这个问题是如何参数每个功能传递给jQuery的。
第一种方法:使用部分功能 - more on this 和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));
第二种方法是
$。每个函数可以接受或者2个参数Index
和Element
(也可称为this
) OR 如果你不需要Index
那么你可以传递Array
作为参数传递给$。每次和元件作为本
警告称: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);
如果你通过数组作为参数 OTH erwise 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;
},
谢谢! +1为[jsfiddle.net](http://www.jsfiddle.net) – MarioVW 2011-02-17 20:19:50