2011-01-30 7 views
4

하지 않는 이유는이 작품 :jQuery를 - 변수 다른 함수에서 함수 변수를 호출

var foo = function() { 
    ... 
    }; 

    var boo = function() { 
    ... 
    el.foo(); 
    } 

?

foo가 정의되지 않은 오류가 발생합니다. 하지만 방금 위에 정의 ...

+0

'el.foo()'대신 'foo()'를 호출하십시오. – JCOC611

+0

우리가 누락 된 중요한 컨텍스트가 있다고 생각합니다. 'el.foo()'는 (여기서 볼 수 있듯이)'el' 객체의 메소드로'foo'를 생성하지 않기 때문에 여기서는 작동하지 않습니다 - 당신은 일반 변수를 생성합니다. – sdleihssirhc

답변

3

그냥 el.foo()가 아니라 foo()를 호출하면됩니다. (당신이 이것을 사용하는 방법에 대해 뭔가 빠뜨린 것이 아니라면)

2

왜냐하면 fooel의 속성이 아니기 때문입니다. 그것은 변수입니다.

당신은해야 할 것 : 당신이 있다면

var foo = function() { 
    //... 
}; 

var boo = function() { 
    //... 
    foo(); 
} 

그것은 작동합니다 :

foo()처럼 보이는이 경우
var el = {}; 
el.foo = function() { 
    // ... 
}; 

var boo = function() { 
    //... 
    el.foo(); 
} 
2

객체 el의 속성하지 않은 것입니다. 함수를 정의했지만 표시된 예제에서 전역 함수 일 수 있습니다. 당신이 foo() 변수 el 작업 할 경우, 다음과 같이 함수에 전달 : foo는 이후

var foo = function(element) { 
    //do something with this element 
    }; 

var boo = function() { 
    ... 
    foo(el); //pass el into the foo function so it can work on it. 
} 
3

은 따라서 당신이 엘의 컨텍스트에서 foo를 호출 할 수 없습니다 엘에 부착 정의 된 함수/아니다. foo를 직접 호출해야합니다. 당신은 foo는이 엘의 컨텍스트에 부착 된 호출해야하는 경우

var foo = function() { 
    ... 
    }; 

    var boo = function() { 
    ... 
    foo(); 
    } 

그러나 다음이 시도 :

var boo = function() { 
     ... 
     foo.call(el);//This calls foo in el's context 
     } 
3

내가 제대로 이해하면, 당신은 jQuery 플러그인 기능 만들어야합니다

jQuery.fn.foo = function(){ 
    return this.each(function(){ 
     // element-specific code here 
    }); 
}; 

var boo = function() { 
    ... 
    el.foo(); 
} 
1

전화하려는 경우 다음과 같이 설정합니다.

el.foo() 

그리고 엘의 jQuery 객체, 당신은으로 '갑'을 정의 할 필요가있다이 경우

var el = $("#smth"); 
el.foo(); 

같은 것입니다 : 당신이 단지에서 'foo는'전화를 시도하는 경우에, 그렇지 않으면

$.fn.foo = function() { 
.... 
} 

은 '엘'없이 그냥 부르면됩니다.

var foo = function() { 
... 
}; 

var boo = function() { 
    ... 
    foo(); 
} 

희망이 있습니다.

관련 문제