2009-09-01 3 views
0

가 어떻게 같은 (또는 호출하든) JQuery와 반복자 함수에 매개 변수를 전달할 수있는 매개 변수 절대로 배열이 아닙니다. 제안? 나는 국가를 글로벌이라고 선언하지 않는 것을 선호한다. 위의 코드는 메서드 내부에 있습니다.JQuery와 반복자 기능은

답변

3

코드는 단지 states을 클로저로 사용할 수 있습니다. 부모 메서드에 로컬로 states을 선언 한 다음 each에 전달하는 익명 함수 내부에서 참조 할 수 있습니다. 사실, 내가 보이지 않아요 다른 버그, 당신은 단지

$(children).each(function() { 

$(children).each(function(states) { 

을 바꿀 수 있으며 글로벌없이 작동 것 결석.

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)); 
+0

이 변수 선언의 끝을 세미콜론과 문을 반환하는 것을 잊지 마세요() 함수에 미세한 변화 기능 (상태)해야하므로

상태, 내부 익명 함수로 사용할 수 있습니다 (두 번째와 세 번째 마지막 줄), 또는 JSLint는 여러분의 감정을 상하게 할 것입니다;) 저는 states 변수의 'stackwise'선언을 좋아합니다. –

+0

@DDaviesBrackett : JSLint 란 무엇입니까? 당신 getEachCallback = function (states) {return function() {};};을 의미합니다. ??? –

+0

네, 저의 뜻입니다. jslint는 JS를 위생 처리하는 메커니즘 인 www.jslint.com으로, 실수로 발을 쏘지 않도록합니다. –

0

$ .each() 함수의 매개 변수는 배열 자체가 아니라 현재 항목의 인덱스입니다. 푸시하고 터지는 경우에는 필요하지 않으므로 매개 변수를 완전히 삭제하십시오. 그것은 폐쇄 때문에 당신이