2010-12-27 35 views
1

Object로 사용하려는 jQuery-Plugin을 작성했습니다. 그래서 플러그인 내의 일부 함수를 선언했습니다.이 함수는 메서드가있는 객체와 마찬가지로 다른 위치에서 호출하려고합니다. 그게 가능한가? jQuery-Plugin-function의 내부 함수를 호출 하시겠습니까?

(function($){ 
    $.fn.myPlugin = function(){ 
     // Here I want methods... 
     function foo() 
     { 
      // do something... 
     } 
    } 
})(jQuery); 

그런 다음 내가 좋아하는 플러그인 외부에서 내부 함수를 호출 할 :

은 간단하게하려면

$.myPlugin.foo(); 

그러나 그것은 작동하지 않습니다. 그래서 심지어 가능합니까? 아니면 다른 해결책이 있습니까? 나는이 목적을 위해 일반적인 무관 한 jQuery 클래스를 사용하고 싶지 않다. 이 플러그인은 다른 jQuery-Plugins과 함께 작동해야하기 때문입니다. 좋아

(function($){ 
    $.fn.myPlugin = function(){ 
     // Here I want methods... 
     $.fn.myPlugin.foo = function() 
     { 
      // do something... 
     } 
    } 
})(jQuery); 

그리고 당신이 그것을 호출 할 수 있습니다 :

답변

1

이 방법 :

(function($){ 
    $.fn.myPlugin = (function(){ 
     // Here I want methods... 
     this.foo = function() 
     { 
      // do something... 
     } 
    })(); 
})(jQuery); 
+0

고마워. 이 솔루션은 내 요구 사항에 맞는 것 같습니다. 불행히도 코드에 오류가 있습니다. 메소드 선언 다음에'();를 생략해야합니다. 왜냐하면 그것들과 작동하지 않기 때문입니다. –

+0

저는 자바 스크립트에서 약간 녹슨 것 같습니다. 필요한 경우 내 게시물을 편집하십시오. –

2

당신은 $.fn를 사용할 수 있으며이 같은 코드를 다시 쓰기 감사

myPlugin().foo; 
+0

답변 해 주셔서 감사합니다. 훌륭하게 작동합니다. 오히려 Alexandre C의 솔루션을 선호합니다. 더 우아 해 보입니다. –

+0

@faileN : 물론 그걸로 갈 수는 있지만, 그것이 본질적으로 같은 것임을주의하십시오.) – Sarfraz

+0

Yupp 나는 알고있다. 너의 잘못이라고 말하지 않았어 :) 알렉상드르 C. 솔루션이 더 우아하다고 생각 했어. P –

1

jQuery 문서 사이트 recommends a good way of doing it : make $.fn.myPlugin은 함수의 이름을 첫 번째 매개 변수로 사용하고 나머지 모든 인수는 올바른 함수로 전달합니다. 예제 코드는 다소 길기 때문에 그 사이트로 가서 살펴보기 바란다.

+0

또한 멋진 솔루션입니다. 하지만 이것은 플러그인에서 갖고 싶은 단 한가지 방법으로 인해 많은 오버 플로우가 있습니다 :) 감사합니다. 나는 더 큰 작업을 염두에두고 그것을 지킬 것이다 :) –

관련 문제