如何将参数传递给jquery迭代器函数(或其他任何调用函数),如:
var states = new Array();
states.push(true);
$(children).each(function(states) {
if(this.depth>states.length)
{
states.push(this.collapsed);
}
else if (this.depth<states.length)
{
states.pop();
}
var collapsed=states[states.length-1];
}
);
“states”参数既可以作为int或布尔值,也不会作为数组到达。建议?我宁愿不把国家宣布为全球性的。 (上面的代码位于方法内部。)
答案 0 :(得分:3)
代码只能使用states
作为闭包;您可以在本地向父方法声明states
,然后从传递给each
的匿名函数中引用它。事实上,除了我没有看到的任何其他错误,你可以改变
$(children).each(function(states) {
到
$(children).each(function() {
并且它没有全球化。
答案 1 :(得分:2)
getEachCallback = function(states) {
return function() {
if(this.depth>states.length)
{
states.push(this.collapsed);
}
else if (this.depth<states.length)
{
states.pop();
}
var collapsed=states[states.length-1];
};
};
$(children).each(getEachCallback (states));
答案 2 :(得分:0)
$ .each()函数的参数不是数组本身,而是当前项的索引。如果您正在推动并弹出,则不需要它,所以只需完全省略参数即可。
状态将可用于内部匿名函数,因为它是一个闭包,所以你应该很好地将函数(状态)更改为函数()