jquery迭代器函数参数

时间:2009-09-01 18:37:47

标签: jquery

如何将参数传递给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或布尔值,也不会作为数组到达。建议?我宁愿不把国家宣布为全球性的。 (上面的代码位于方法内部。)

3 个答案:

答案 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()函数的参数不是数组本身,而是当前项的索引。如果您正在推动并弹出,则不需要它,所以只需完全省略参数即可。

状态将可用于内部匿名函数,因为它是一个闭包,所以你应该很好地将函数(状态)更改为函数()