2011-05-12 1 views
1

JQuery와 플러그인 확장 방법에 액세스하는 방법 다음 : 내 코드에서 다음 플러그인 않습니다 정상적으로 나는 현재 (많은 다른 사람의 사이에서) Raty라는 JQuery와 플러그인 함께 일하고 있어요

(function($){ 
     $.fn.raty = function(settings, url){ 
      // Some default operations 
      // Some functions 
      this.activate = function(){} 
      this.reset = function(){} 
     }; 
}); 

, 나는 그것을 호출 그래서 수행하여

$('#someDivId').raty(); 

나는, 나는 JQuery와 $와 이후의 단계 ('에서 찾는다 이러한 확장 방법 중 하나 "someDivId"에 (예 : 리셋())를 호출 할 때 문제가 발생 #someDivId ')하지만 확장 된 메서드 중 하나를 실행할 때 오류가 발생합니다 (개체에 이러한 메서드가없는 것 같습니다. 첨부).

코드의 조각 작동하지 않은 : 그것은 플러그인 외부에서 이러한 메서드에 액세스 가능한 모든 경우

$('#someDivId').activate(); 

내 질문, 당신은 알고 있습니까? 그리고 그렇지 않다면 이것을하는 일반적인 방법을 알고 있습니까?

이 예제에서 나는 이러한 방법 중 하나를 실행하기 위해 클릭 할 수있는 숨겨진 링크를 추가했습니다. (하지만 여전히 나를 위해 못생긴 해킹 : P)

감사합니다, 니콜라스

+0

죄송합니다. 저는 여기에서 아주 새로운 것으로 알고 있습니다. – Nicolas

답변

1

$('#someDivId').raty();이 특정의 jQuery 객체 인스턴스에 기능을 첨부합니다. $('#someDivId')에 다시 전화하면 새 인스턴스가 만들어집니다.

var $div = $('#someDivId').raty(); 
// later 
$div.activate(); 

raty() 좋은 시민 및 this을 반환 가정

는 원래 인스턴스에 대한 참조를 유지해야합니다. 그렇지 않다면 먼저 참조 번호를 만들어야합니다.

var $div = $('#someDivId'); 
$div.raty(); 
+0

안녕하세요 펠릭스, 빠른 답변 주셔서 감사합니다. 문제는 웹 사이트의 많은 객체가이 플러그인을 사용하고 있다는 것입니다 (각 주석은 하나 있습니다). 따라서이 모든 대상에 대한 참고 문헌을 찾는 것은 불가능합니다. 사용자가 주석을 비활성화하면 언제든지 해당 주석의 등급 요소의 activate/deactivate 메소드를 호출해야합니다. 그럼 내가 할 수없는 일이 무엇이든 가능하지 않습니까, 아니면 아직도 뭔가를 놓치고 있습니까? – Nicolas

+0

@Nicolas : 많은 것들이 있다면, 해시 맵 (객체)를 사용하여 참조를 저장해야 할 수도 있습니다. 예 : 선택기가 키가 될 수 있고 jQuery 객체가 값이 될 수 있습니다. 'elements [selector] = $ (selector) .raty();와 같은 것입니다. 더 많은 정보를 제공하고 플러그인이하는 일을 설명하면 아마 우리가 더 많이 당신을 도울 수 있습니다. –

+0

그러나 플러그 인에게 새 인스턴스를 만들지 말고 오히려 이전 인스턴스를 사용하는 것은 불가능합니다. 그런 방법들이 거기에서 확장되어 있습니까? 또는 요소 ID를 사용하여 (어떤 식 으로든) jquery 인스턴스에 액세스하여 거기에서 검색 할 수 있습니까? 페이지가 부분적으로 3 초마다 업데이트되므로 해시 테이블을 매치하는 것은 불가능합니다. – Nicolas

관련 문제